在 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
在 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
您需要 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
你需要使用!
反对的结果 in
!("key" in object)
现在是这样的。
(!"key") in object
这和做的一样
false in object
变成
"false" in object