D
D
danilstep2018-02-23 19:35:45
JavaScript
danilstep, 2018-02-23 19:35:45

Why doesn't the comparison operator === work in JS?

///**** PROLOGUE ****///
In general, I decided to practice in JS and here is the situation...
The comparison operator === considers that zero is not zero!!!
And it displays an error (see code.)
But I put the operator == which "Cancel" also counts as 0 because: zero is incorrect as false NaN and ETC and ETC. .
Who can - help because I'm a beginner.
Thanks in advance.

Source
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--;
      }
Second part
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)
    }

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Anton Spirin, 2018-02-23
@danilstep

prompt returns string when Ok is clicked and null when Cancel is clicked :

var x = prompt("введите число");
console.log(typeof x); // string

You can rewrite it like this if you just need to cast to a number:
var x = +prompt("введите число");
console.log(typeof x); // number при условии, что строку можно привести к числу

Strict equality always returns false when comparing different types : If you need to do checks for hitting Cancel , entering an empty string or a non-numeric value, the cast should be done after these checks:
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');
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question