2

在 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

4

2 回答 2

9

您需要 do !('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
于 2012-08-19T17:09:46.143 回答
4

你需要使用!反对的结果 in

!("key" in object)

现在是这样的。

(!"key") in object

这和做的一样

false in object

变成

"false" in object
于 2012-08-19T17:10:07.177 回答