Почему мой оператор if-else не работает с использованием ИЛИ ( | | )?

Когда я запускаю программу, консоль выдает ошибку, что «воскресенье» (и «суббота» в зависимости от ввода пользователя) не существует. Я пробовал много комбинаций в операторе if со скобками, и ничего не получалось.

var day = prompt("Enter a day of the week.");
console.info("Day is: " + day);
//if user input is equal to Sunday OR user input is equal to Saturday,
if (getText(day) == "Sunday" || getText(day) == "Saturday") {
  console.info("It's the weekend!");
} else {
  console.info("Can't wait for the weekend to get here.");
}

У вас отсутствует языковой тег. Это похоже на Javascript для меня. У меня такое ощущение, что равенство строк использует оператор === в Javascript, а не == (который только проверяет, является ли это одним и тем же базовым объектом).

paddy 10.12.2020 02:33

Где ваша функция getText? Uncaught ReferenceError: getText не определен.

Anh Nhat Tran 10.12.2020 02:38

Задавая вопрос о коде, важно добавить тег для конкретного используемого языка. Пожалуйста, отредактируйте свой вопрос, чтобы мы могли попытаться помочь. Спасибо.

Ken White 10.12.2020 02:41

В JavaScript == проверяет равенство, но === проверяет точное соответствие, включая тип данных. Чаще всего используется ==. Если вы сравните целое число 1 со строкой, "1" == будет оценено как истинное.

SendETHToThisAddress 10.12.2020 02:48

@paddy: вы смешиваете его с другими языками; JS ===/== не является аналогом Python ==/is. == — равенство с принудительным типом, === — равенство со строгим типом. Любой из них будет работать здесь.

ShadowRanger 10.12.2020 02:51
Поведение ключевого слова "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
5
70
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы должны удалить getText, и он будет работать правильно:

var day = prompt('Enter a day of the week.');
console.info('Day is: ' + day);
if (day == 'Sunday' || day == 'Saturday') {
  console.info("It's the weekend!");
} else {
  console.info("Can't wait for the weekend to get here.");
}

Функция prompt() всегда возвращает string, если пользователь нажимает «ОК», или null, если пользователь нажимает «Отмена». В вашем случае, если вы что-то введете и нажмете «ОК», day будет строкой, которая может быть "Sunday" или "Saturday".

Однако, если вы хотите рассматривать прописные и строчные буквы как равные, например, "sunday" эквивалентно "Sunday", вы должны использовать метод toLowerCase() или toUpperCase(), чтобы убедиться, что обе строки либо все строчные, либо все прописные. Что-то вроде ниже:

var day = prompt("Enter a day of the week.");
console.info("Day is: " + day);
//if user input is equal to Sunday OR user input is equal to Saturday,
if (day.toLowerCase() == "sunday" || day.toLowerCase() == "saturday") {
  console.info("It's the weekend!");
} else {
  console.info("Can't wait for the weekend to get here.");
}

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