ショートカット演算子(短絡演算)
論理積/論理和演算を利用する場合、
「左式だけが評価されて、右式が評価されない」ケースがあります。
例えば、 && 演算子の場合、左式がfalseと評価された時点で条件式全体がfalseとなるので、右式は評価(実行)されません。
このような演算のことをショートカット演算子(短絡演算)と言います。
そのため、
これらの式は意味的に等価です。
if(x === 1){console.log('Hello');}//1
x === 1 && console.log ('Hello');//2
1 では変数xが1である場合にメッセージを表示します。
2では左式がfalseの場合、&&演算子では右式は実行されません。
つまり2では、変数xが1である場合のみ右式が実行されるのです。
しかし、2のような記述は原則として避けるべきものです。
それは、右式が実行されるかどうかあいまいになるため、思わぬバグが発生する可能性を孕むためです。
ではショートカット演算子はどのような時に使うのでしょうか?
ショートカット演算子の使いどころ
デフォルトの値として設定するときに使う
var msg = '';
msg = msg || 'Hello, world!';
console.log(msg);//Hello, world!
変数がfalsyな値、つまり空文字列などの場合に、デフォルト値として Hello, world! を代入します。
*falsyな値に意味がある場合
空文字や0などfalsyな値に意味がある場合、
以下のように条件演算子を利用します。
msg = (msg === undefind ? 'Hello, world!':msg);
これによって、変数msgがundefind(未定義)の場合にだけ、デフォルト値が適用されます。