Onishichi
@Onishichi (OniShichi)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Javascript の && 演算や || 演算の右式と左式の括弧について

先日,会社の先輩と以下のパーターン1の条件式を見て,&& 演算や || 演算の右式と左式に2項演算を含む場合,パターン2のように括弧でくくるべきだという話をしました.
ですが直そうとすると ESLint の no-extra-parens エラーが出てしまいました.
eslint.json などの設定ファイルは会社のパソコンに入っているので共有できませんが,eslint --initでほとんどデフォルトの設定をしたと記憶しています.
C++ などではパターン2のように書くのが一般的ですが,ESLint でエラーが出たことからJavascript ではパターン1の書き方が一般的なのかと思い質問しました.
実際のところどうなのでしょうか?

  • パターン1
if ( a === 0 && b === 1 )
{
    console.log( "Hello" );
}
  • パターン2
if ( ( a === 0 ) && ( b === 1 ) )
{
    console.log( "Hello" );
}
0

2Answer

検索するとこんなのがありました。

no-extra-parens
「あってもなくても意味が変わらないかっこは省略しろ」という、先輩と話して決めたルールそのものをNGとしています。

jsは実行時に構文解釈され、かっこの多用は構文解釈の負担を増やすことになるため、速度を気にするならない方がベターということになります。
(JITコンパイルされるので現実に差が出ることはほとんどないでしょうけど)

かっこをつけないことにするか、ESlintのno-extra-parensを無効に設定するかを改めて先輩と相談した方がよさそうですね。

0Like

JavaScriptでもC++でも==は&&より結合優先度が高いので、いずれにしろ言語仕様的には完全に無駄な括弧です。
no-extra-parensを無効化するのはエラーを抑制する一つの手だとは思いますが、その場合おそらく (1) みたいな書き方も報告されなくなるため、適用は慎重に検討すべきだと思います。
今回の場合は、なぜ括弧でくくるべきだと考えるのか、をもっと掘り下げるべきではないでしょうか(単純に読みづらいと思ったから、だけではないでしょうか?この場合は変数に切り出すなど他の手法も考えられます)。
コーディング規約は一度決めると後の変更は難しいので、そのあたりはしっかりと掘り下げるべきだと思います。

0Like

Your answer might help someone💌