1. ホーム
  2. javascript

[解決済み] javascriptのif文で複数の条件を指定した場合、すべての条件をテストするのでしょうか?

2022-09-26 22:27:37

質問

javascriptで、複数の条件をテストするif文を使用する場合、javascriptはそれらすべてを関係なくテストするのでしょうか、それともすでにfalseの場合はすべてをテストする前にベールされるのでしょうか。

例えば

 a = 1
 b = 2
 c = 1

 if (a==1 && b==1 && c==1)

javascriptはこれらの3つの条件すべてをテストするのでしょうか、それともbが1でないため偽であることを確認した後、文を終了するのでしょうか?

私はパフォーマンスの観点から質問します。たとえば、私が3つの複雑なjQueryセレクタをテストしている場合、最初の1つによってfalseを返すことが明らかであれば、jQueryに3回DOMをトラバースさせない方がよいでしょう(この場合、jQueryはfalseを返すことになります)。(この場合、3つのif文をネストする方がより理にかなっています)。

補足: より多くの好奇心、これに対する適切な用語は何でしょうか? 多くの人が「短絡」という用語を使用していることに気づきました。また、ある言語はこれを行い、他の言語は行わないのでしょうか?

どのように解決するのですか?

この && 演算子は短絡します。つまり、左の条件が偽であれば、右の条件をわざわざ評価する必要はないのです。

同様に || 演算子も左の条件が真であれば短絡します。

EDIT: とはいえ、ベンチマークをとって問題だと判断するまでは、パフォーマンスを気にするべきではありません。早まったマイクロ最適化は保守性の弊害です。