@danilstep

Почему не работает оператор сравнения === в JS?

///**** ПРОЛОГ ****///
Вообщем я решил потренироваться в JS и тут такая ситуация...
Оператор сравнения === считает что ноль это не ноль!!!
И выводит ошибку (см.код.)
Но я ставил оператор == который "Отмена" тоже считает за 0 ибо: ноль это неверно как false NaN и Т.Д и Т.П. .
Кто может - помогите ибо я -- новичок.
Заранее спасибо.

Исходный код
for (var a = 1; a<=10; a++){
			b = +prompt(a+"-ое число =")	/*a+ -ое приставка.с помощью этой переменной в будущем будет проверено какое это число. Или не число, что в последствии выдает ошибку. */
			if (b>0)
			{
				num1 += 1;
			}
				
			else if(b<0)
			{
				num0+=1;
			}
			else if (b===0) 
			{
				nol+=1;
			}
			else
			{
				alert("ОШИБКА!!! ПОВТОРИТЕ ВВОД!!!");
				a--;
			}
Вторая часть
if (nol===10)
		{
			alert('Были одни нули.')
		}

		else if (num1===10)
		{
			alert("Были одни положительные числа.")
		}
		else if (num0===10)
		{
			alert("Были одни отрицательные числа.")
		}
		else
		{




			if (nol===0)
			{
				nol = "не было ни одного ноля"		/*проверка на ноли*/
			}
			else
			{
				nol = "было " + nol + " нолей"
			}
		


			if (num1===0)
			{
				num1 = "не было ни одного положительного числа" 	/*проверка на положительные числа*/
			}
			else
			{
				num1 = "было " + num1 + " положительных"
			}


			if (num0===0)
			{
				num0 = "не было ни одного отрицательного числа" 	/*проверка на отрицательные числа*/
			}
			else
			{
				num0 = "было " + num0 + " отрицательных чисел."
			}
		alert("У вас "+nol+" и," +num1+" а также,"+num0)
		}
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
prompt возвращает string при нажатии Ok и null при нажатии Отмена:
var x = prompt("введите число");
console.log(typeof x); // string

Можно переписать так если надо просто приводить к числу:
var x = +prompt("введите число");
console.log(typeof x); // number при условии, что строку можно привести к числу

Строгое равенство при сравнении разных типов всегда возвращает false:
'0' === 0 // false

Если вам надо делать проверки на нажатие Отмена, ввод пустой строки или нечислового значения, приведение стоит делать после этих проверок:
var input = prompt('Введите число: ');

if (input === '') {
  alert('Пустая строка');
} else if (input === null) {
  alert('Вы нажали "Отмена"');
} else if (Number.isNaN(+input)) {
  alert('Вы ввели не число');
} else if (+input === 0) {
  alert('Вы ввели 0');
} else if (+input > 0) {
  alert('Вы ввели число больше 0');
} else {
  alert('Вы ввели число меньше 0');
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы