在javascript中:
d={one: false, two: true}
d.one
d.two
d.three
我希望能够区分d.one
和d.three
。默认情况下,它们都评估为false,但在我的情况下,它们不应该被视为相同。
答案 0 :(得分:22)
你可以做到
"one" in d // or "two", etc
或
d.hasOwnProperty("one")
您可能需要hasOwnProperty,因为如果属性位于原型链中的对象上,in
运算符也将返回true。例如
"toString" in d // -> true
d.hasOwnProperty("toString") // -> false
答案 1 :(得分:0)
这些值并非严格错误:
js> d={one: false, two: true}
[object Object]
js> d.one == false
true
js> d.three == false
false
js> d.three === false
false
js> d.three === undefined
true
js> 'three' in d
false
js> 'one' in d
true
另外,请参阅olliej和Ken的评论。
答案 2 :(得分:-1)
好吧,d.one
为false
,d.three
为undefined
。
var d={one: false, two: true};
alert("one: " + d.one + "\nthree: " + d.three);
// Output:
// one: false
// three: undefined
Javascript确实有时会有一些时髦的错误评估,但这不是其中一种情况:
alert(d.three == false); // alerts false
To check for undefined
you can use typeof
if (typeof something == "undefined")
或者,您可以检查three
是d
if (d.hasOwnProperty("three"));