2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

javascriptではif(undefined&&undefined.undefined){}が許される

Posted at

#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
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?