Javascript 使用!而in运算符在应该为真时返回false,为什么?
在Javascript中,以下代码是这样工作的:Javascript 使用!而in运算符在应该为真时返回false,为什么?,javascript,node.js,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 为什么要使用和不返回true?您需要执行!('baz'在foo中),否则它与foo中的(!'baz')相同(在foo中查找'false'),原
> var foo = { bar: 1 }
undefined
> foo
{ bar: 1 }
> 'bar' in foo
true
> !'bar' in foo
false
> 'baz' in foo
false
> !'baz' in foo
false
为什么要使用检查对象是否不包含属性时,
中的code>和不返回true
?您需要执行!('baz'在foo中)
,否则它与foo中的(!'baz')相同(在foo中查找'false'),原因是运算符优先
!'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
您需要使用代码>与
!("key" in object)
现在是这样的
(!"key") in object
这和做同样的事
false in object
"false" in object
成为什么