より良い解決策は何ですか?
if(typeof bla === "undefined" || bla === null)...
または
if(bla)...
2番目の解決策を実行する場合、未定義かどうかを本当に確認する必要がありますか?
ありがとう。
より良い解決策は何ですか?
if(typeof bla === "undefined" || bla === null)...
または
if(bla)...
2番目の解決策を実行する場合、未定義かどうかを本当に確認する必要がありますか?
ありがとう。
それは、変数に何が含まれていると予想されるかによって異なります。
たとえば、オブジェクトを含める必要がある場合は、オブジェクト参照が真実であるため、2 番目のオプションが適切に機能します。
たとえば、ブール値を含める必要がある場合、2 番目のオプションはまったく機能しません。これは、false
存在しない値と同じ結果が得られるためです。
本当に未定義かどうかを確認する必要がありますか?
いいえ、undefined と null の両方が false に解決されます。2番目のオプションは間違いなく優れています。
「未定義かどうかを確認する」には、通常、最善の解決策は 3 番目の解決策です。
function isDef(obj) {
var undefined;
return obj === undefined;
}
これは、時間を失うことなくオブジェクトが未定義であるかどうかをチェックし、このテストは、、または2 番目のテストのtypeof
ように true として検証されません。""
null
NaN
0
唯一の落とし穴は、誰かがグローバルundefined
オブジェクトをオーバーライドできることです。ES5 の厳密モードでは不可能ですが、コードでこれを防ぐ必要があります。undefined
ローカル定義によるシャドウイングvar undefined;
がそれを行います。
また、isDef
関数を使用することで、より優れたポータブルなミニフィケーションとよりシンプルなロジックを実現できます。
if (isDef(x)) {
// do something
} else {
// do something else
};