Ответ 1
Оператор === - ваш друг. Никогда не используйте оператор ==; он укусит вас, как вы можете видеть.
Почему оба
[] == false
и
![] == false
истинны?
Оператор === - ваш друг. Никогда не используйте оператор ==; он укусит вас, как вы можете видеть.
Пустой список []
должен считаться "ложным", однако в ![]
! затем преобразует операцию для проверки ссылки на объект, где непустой не считается "ложным".
До [] сравнивается с ложным, его принуждают к строке, которая принуждается к числу, пустой строке в случае пустого массива. Пустая строка объединяется в 0, которая представляет собой то же значение, что и false, для численного вычисления.
Используйте === вместо ==, чтобы избежать этой проблемы.
Другие массивы также ложны:
['']
[[[]]]
(function () { var arr = []; arr[0] = arr; })()
[0]
['-0.0']