私が理解しているように、未定義の変数をチェックする好ましい方法はtypeof a === 'undefined'
.
しかし、なぜそれが良いのtypeof a == 'undefined'
でしょうか? どのような場所で失敗する可能性がありますか?
私が理解しているように、未定義の変数をチェックする好ましい方法はtypeof a === 'undefined'
.
しかし、なぜそれが良いのtypeof a == 'undefined'
でしょうか? どのような場所で失敗する可能性がありますか?
この場合、 sincetypeof
は常に次の文字列を返します: 良くはありません (悪くもありません)。実質的な違いはありません。
一般に、===
型を明示する必要があり、JavaScript の型解決規則が直感的でない場合に予期しない結果が得られないようにするため、使用が推奨されます。
との違いは==
、が変換===
を実行することです。==
したがって、たとえば 1 は==
to になりますが、 to'1'
ではありません。チェックするときにそのアプローチが好まれる理由は、JavaScript には既知の比較の落とし穴があるためです。===
'1'
undefined
最も一般的な:
'' == '0' //false
0 == '' //true
0 == '0' //true
false == 'false' //false
false == '0' //true
false == undefined //false
false == null //false
null == undefined //true
" \t\r\n" == 0 //true
そのため、見つけにくいバグにつながる可能性が===
ある問題を回避しています。null == undefined
そのため、==
代わりに を使用する必要があり===
ます。===
バックグラウンドで変換を実行していないため、操作も高速です。
この特定のケースでは、効果的に違いはありません。使用してtypeof a == 'undefined'
もtypeof a === 'undefined'
出力も同じで、バグはありません。これtypeof
は、文字列を返すためです。ただし、操作は高速になるため、パフォーマンスの向上はほとんどありません。
は文字列のみを返すためtypeof
、2 つの文字列を で比較しても安全==
です。