- 下記パターン
- if文でbの評価は行わない
var a = true; var b = false; if(a && b) console.log("true");
検証
- 下記ソースをブラウザの開発者モードのコンソールにぶち込めば下記結果返ってくる
- AND,ORで1桁同士の演算の2進数カルノー図かけば当たり前でANDは先発がFalseなら全体でFalse確定のため、後発の評価をする必要がない
- 理屈でわかってもJavaScriptは変数にfunctionをそのまま代入可のため、思わぬハマりポイントになる
- 下記でいう
conditionA
がクソ長メソッドだったらとか、if条件式がオペランドまみれとか
- 下記でいう
var conditionA = () => { console.log("A"); return false; } var conditionB = () => { console.log("B"); return true; } if(conditionA() && conditionB()); // Aのみ出力 if(conditionA() || conditionB()); // A,B両方出力