Это возвращает true:
[] == false
Но здесь вызывается предупреждение:
if([]){ alert('empty array is true here'); }
Можете ли вы объяснить, почему?
Это возвращает true:
[] == false
Но здесь вызывается предупреждение:
if([]){ alert('empty array is true here'); }
Можете ли вы объяснить, почему?
это связано с тем, что == в преобразовании JS-сил и если один тип может быть преобразован в другое, возвращаемое значение true, а здесь, потому что [] невозможно изменить или сравнить с bool, это неверно
где as if([]) проверяет значения null и undefined, и поскольку [] не является ни нулевым, ни undefined, он возвращает true
проверить это Какой оператор равен (== vs ===) должен использоваться при сравнении JavaScript?
Согласно разделу 11.9.3 ECMAScript & reg; Language Specification, любое сравнение == выполняется следующим образом:
На первом этапе ToNumber() применяется к false и дает Number(0). На втором шаге правило # 9 применяет ToPrimitive() к пустому массиву и дает "", который, преобразованный в числовое значение, также становится Number(0).
Дополнительно раздел 9.2 говорит об использовании объекта в выражении:
Абстрактная операция
ToBooleanпреобразует свой аргумент в значение типа Boolean в соответствии с этой таблицей: