用!如果它应该是真的,那么in运算符返回false,为什么?

时间:2012-08-19 17:08:28

标签: javascript node.js

在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

2 个答案:

答案 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