在Javascript中,以下代码的工作原理如下:
> var foo = { bar: 1 }
undefined
> foo
{ bar: 1 }
> 'bar' in foo
true
> !'bar' in foo
false
> 'baz' in foo
false
> !'baz' in foo
false
在检查对象是否包含属性时,为什么使用!
和in
不返回true
?
答案 0 :(得分:9)
您需要执行!('baz' in foo)
,否则它与(!'baz') in foo
(查找'false' in foo
)相同,原因是运算符优先。
!'foo' in {false: true} //as in 'false' in {false: true}
//true
!('foo' in {false: true}) //as in, does a key "foo" not exist in the object
//true
答案 1 :(得分:4)
您需要针对!
in
!("key" in object)
现在就是这样。
(!"key") in object
这与做
相同false in object
Whcih成为
"false" in object