Оператор in
не делает то, что вы думаете, он делает. Оператор in
возвращает true
, если указанный операнд является свойством объекта. Для массивов он возвращает true
, если операндом является действительный index (что имеет смысл, если рассматривать массивы как объект особого случая, где свойства просто называются 0, 1, 2, ... )
Например, попробуйте это:
javascript:var x=[1,4,6]; alert(2 in x);
Также будет возвращено true
, потому что "2" является допустимым индексом в массиве. Точно так же «0» является индексом в массиве, поэтому также возвращает true
.