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?
 
     
     
    