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
オブジェクトにプロパティが含まれていないかどうかを確認するときに、 using!
とin
not が返されるのはなぜですか?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
オブジェクトにプロパティが含まれていないかどうかを確認するときに、 using!
とin
not が返されるのはなぜですか?true
を行う必要があります。それ以外の場合は(これは を検索します)!('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