Javascriptでは、myObject == null
未定義とnullのチェックを処理する有効な方法はありますか?
JSLintは私がそうすることを好むでしょう(myObject === undefined || myObject === null)
ダグ・クロックフォードは何をしますか? (WWDCD)
Javascriptでは、myObject == null
未定義とnullのチェックを処理する有効な方法はありますか?
JSLintは私がそうすることを好むでしょう(myObject === undefined || myObject === null)
ダグ・クロックフォードは何をしますか? (WWDCD)
はい、それは両方を確認する良い方法です。言語仕様には次のように記載==
されています(異なるタイプの値の比較に関して):
2) x が null で y が定義されていない場合は、true を返します。
3) x が未定義で y が null の場合、true を返します。
ここで、 xとyは比較の項ですx == y
。を比較する場合、が、またはそれ自体x == null
である場合にのみ true になります。x
undefined
null
明確にするために、ここで「未定義」と言うときは、undefined
定義されていない変数ではなく、値を意味します (これらは、 を除いて、使用されるたびに ReferenceError を生成しますtypeof
)。
WWDCD に関しては、Ian の言葉を引用します。Crockford は、JSLint が (明らかに) 示唆していることを提案します。それは「使用する===
、決して使用しない==
」という意味です。したがって、これは彼にとって問題ではありません。
myObject == null
未定義とnullのチェックを処理する有効な方法はありますか?
はい。仕様で定義されているように、等しい値は と の 2 つだけnull
です。undefined
null
JSLintは私がそうすることを好むでしょう
(myObject === undefined || myObject === null)
それではあなたの意図が理解できません。初めてではありません。または、それ (およびその作成者 Crockford) は、明示的なコードを記述して、Javascript の内部構造をすべて知っているわけではないすべての人が正しく理解できるようにすることを望んでいます。
このコードの実行:
<html>
<head>
<script type="text/javascript">
function test() {
var variable = undefined;
if (typeof variable === 'undefined') console.log("variable is undefined");
if (variable == null) {
console.log("variable is null");
} else {
console.log("variable is not null");
}
}
</script>
</head>
<body onLoad="test()">
</body>
出力を返しました
variable is undefined
variable is null
だから...それはうまくいくようです。しかし、null と undefined について奇妙なことを覚えているようです。あるいは、それは別の言語だったのかもしれません。しばらくすると、それらはぼやけ始めます。
いずれにせよ、@collapsar が提供した答えは、すべてのケースをチェックするため、おそらく最もクリーンな方法です。