!value のようなコードはお勧めしない理由

!value のようなコードを使う時はよく考える必要があると思っています。

if(!value){
  //do something
}

このコードで、具体的にvalueがどういう時にifの処理を行いたいのでしょうか。

undefined の時かもしれませんし、0 のときかもしれませんし、空文字のときかもしれません。

もしくはそのすべてということも考えられます。

このようにこのコードだけでは、どうしたいのかが曖昧です。

一方で以下の場合はどうでしょうか。

if(value === undefined){
  //do something
}

明確に undefined の場合だけif文の中が実行されることがわかります。

複数条件がある場合は || で羅列されて冗長な気もしますが、明示的に書かれていることで理解しやすくなります。

常にメリットとデメリットを考えながら書くことが大切だと思っています。