Javascript gotcha: пустой список для boolean conversion
Почему оба
[] == false
и
![] == false
истинны?
Ответ 1
Оператор === - ваш друг. Никогда не используйте оператор ==; он укусит вас, как вы можете видеть.
Ответ 2
Пустой список [] должен считаться "ложным", однако в ![]! затем преобразует операцию для проверки ссылки на объект, где непустой не считается "ложным".
Ответ 3
До [] сравнивается с ложным, его принуждают к строке, которая принуждается к числу, пустой строке в случае пустого массива. Пустая строка объединяется в 0, которая представляет собой то же значение, что и false, для численного вычисления.
Используйте === вместо ==, чтобы избежать этой проблемы.