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