Если тест на [undefined]

[undefined] === true возвращает false.

if ([undefined]) { 
  console.info('is true') 
}

выводит is true на консоль.

Какой в ​​этом смысл?

Добавьте тег для используемого вами языка (javascript?)

Ljm Dullaart 09.11.2018 19:19

Попробуйте Boolean([undefined])

John 09.11.2018 19:22

@John: Slick! Спасибо! Полагаю, это то, что выполняется для условного теста?

fuzzybear3965 09.11.2018 19:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование трех знаков равенства позволяет определить, совпадают ли значение и тип; поэтому 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 09.11.2018 19:29

@ fuzzybear3965 developer.mozilla.org/en-US/docs/Glossary/Truthy "Все значения истинны, если они не определены как ложные (т. е. кроме false, 0," ", null, undefined и NaN)."

John Montgomery 09.11.2018 19:32

Хорошее начало. Но это не объясняет, почему [undefined] == true вернет false, поскольку это очевидно правдиво.

fuzzybear3965 09.11.2018 19:34

Потому что истина - это не то же самое, что «равно истине». Когда вы выполняете явные логические сравнения, вы можете получить разные результаты, полагаясь на истинность. Это одна из больших ловушек, о которой вы должны знать при программировании на JS.

John Montgomery 09.11.2018 19:35

У меня была проблема в моем ответе, где я подразумевал, что истина - это то же самое, что и истина; Я только что удалил этот бит. Но да ... JavaScript может быть забавным в этом отношении.

Chris Forrence 09.11.2018 19:37

Спасибо, @ChrisForrence. Это была хорошая ссылка. Также спасибо за изменение вашего исходного ответа; теперь яснее. Этот вопрос закрыт. Чувак, JavaScript усложняет логические значения.

fuzzybear3965 09.11.2018 19:44

Спасибо, @JohnMontgomery, за ваш вклад. (Я могу только @ одного пользователя на комментарий.)

fuzzybear3965 09.11.2018 19:45

Другие вопросы по теме