#JavaScriptで効率的にifを書きたい
JavaScriptではメソッド含め、全てがオブジェクトなのでa.b.c
みたいなのを頻繁に見かけます。
しかし、他の言語ではa.b
が存在しないのにa.b.c
を参照すれば例外が吐かれるか、Segmentation Faultになりますよね。JavaScriptはとりあえず何があっても動くことを優先に作られている(私見)な言語なので、この辺が割と柔軟です。
論理積演算子で左側だけで成立していれば右側は問われません。どういうことかというと、
if(undefined&&undefined.undefined) {
} //ok
console.log(!!(undefined&&undefined.undefined)) //false
&&演算子で繋げている場合、左側がfalse
なので右側が例外を吐かれるような状態であっても問題なくfalse
を返します。
ただし、左側がtrue
な場合や論理和の時は例外を吐きます。
if(true&&undefined.undefined) {
} //TypeError
console.log(!!(undefined||undefined.undefined)) //TypeError