When I use in
operator in javascript, I find something strange. It seems that in
uses a similar rule as ==
but not the same. Here are some tests:
var obj = {1: 'a', 3: 'b'};
1 in obj //=> true
'1' in obj //=> true
[1] in obj //=> true
true in obj //=> false
Because 1 == '1' == [1] == true
, so it seems that operand will be cast to string or integer type before comparison with in
operator except for boolean
. So I wonder am I right?