Подтвердить что ты не робот

Javascript gotcha: пустой список для boolean conversion

Почему оба

 [] == false

и

![] == false

истинны?

4b9b3361

Ответ 1

Оператор === - ваш друг. Никогда не используйте оператор ==; он укусит вас, как вы можете видеть.

Ответ 2

Пустой список [] должен считаться "ложным", однако в ![]! затем преобразует операцию для проверки ссылки на объект, где непустой не считается "ложным".

Ответ 3

До [] сравнивается с ложным, его принуждают к строке, которая принуждается к числу, пустой строке в случае пустого массива. Пустая строка объединяется в 0, которая представляет собой то же значение, что и false, для численного вычисления.

Используйте === вместо ==, чтобы избежать этой проблемы.

Другие массивы также ложны:

  ['']
  [[[]]]
  (function () { var arr = []; arr[0] = arr; })()
  [0]
  ['-0.0']