[undefined] === true возвращает false.
if ([undefined]) {
console.info('is true')
}
выводит is true на консоль.
Какой в этом смысл?
Попробуйте Boolean([undefined])
@John: Slick! Спасибо! Полагаю, это то, что выполняется для условного теста?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Использование трех знаков равенства позволяет определить, совпадают ли значение и тип; поэтому 1 == true, а 1 !== true.
Ваш if-оператор пытается оценить [undefined], но только в той степени, в которой он правдив или ложен. [undefined] - непустой массив, поэтому он правдив и оценивается как true в операторе if. Однако [undefined] сам по себе не является логическим, поэтому [undefined] === true принимает значение false.
Это немного объясняет, что происходит: https://www.sitepoint.com/javascript-truthy-falsy/
Я должен был написать свой вопрос по-другому. Мой новый / реальный вопрос: почему, если [undefined] == true возвращает false, будет выполняться ветвь if ([undefined]) {}. Как определяется «правдивость», если не сравнением с true?
@ fuzzybear3965 developer.mozilla.org/en-US/docs/Glossary/Truthy "Все значения истинны, если они не определены как ложные (т. е. кроме false, 0," ", null, undefined и NaN)."
Хорошее начало. Но это не объясняет, почему [undefined] == true вернет false, поскольку это очевидно правдиво.
Потому что истина - это не то же самое, что «равно истине». Когда вы выполняете явные логические сравнения, вы можете получить разные результаты, полагаясь на истинность. Это одна из больших ловушек, о которой вы должны знать при программировании на JS.
У меня была проблема в моем ответе, где я подразумевал, что истина - это то же самое, что и истина; Я только что удалил этот бит. Но да ... JavaScript может быть забавным в этом отношении.
Спасибо, @ChrisForrence. Это была хорошая ссылка. Также спасибо за изменение вашего исходного ответа; теперь яснее. Этот вопрос закрыт. Чувак, JavaScript усложняет логические значения.
Спасибо, @JohnMontgomery, за ваш вклад. (Я могу только @ одного пользователя на комментарий.)
Добавьте тег для используемого вами языка (javascript?)