JavaScript では、なぜ人々はtypeof myVar == "undefined"
代わりに? を書くのmyVar == undefined
でしょうか?
互換性の理由ですか?
JavaScript では、なぜ人々はtypeof myVar == "undefined"
代わりに? を書くのmyVar == undefined
でしょうか?
互換性の理由ですか?
これが主な理由です。
if(a == undefined) console.log('test')
>> ReferenceError: a is not defined
if(typeof a == "undefined") console.log('test')
>> test
しかし、この比較を実行すると:
if(window.a == undefined) console.log('test')
>> test
したがってa
、スタンドアロン変数として使用する場合はできません。それを使用window
することは可能であり、どのアプローチを使用するかは問題ではありませんが、コメントで述べたように、すべての変数がスコープtypeof
に属しているわけではないため、使用する方が安全です。window
myVar が実際に未定義の場合、typeof 演算子はエラーをスローしないためです。
myVar == undefined; // Throws a ReferenceError
typeof myVar == "undefined" //True