Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изучение JS - if else и логические операторы (https://javascript.ru/forum/misc/84493-izuchenie-js-if-else-i-logicheskie-operatory.html)

DenisZ 30.09.2022 07:49

Изучение JS - if else и логические операторы
 
Здравствуйте! Изучаю JS.
Есть вопрос: набираю следующий код:
Код:

let p=[0,1,3,5];
let z=[0,2,4,6,8];
let pL = p.length;//Длина массива
let zL = z.length;
/*document.write(pL+" "+zL);*/
let d=true;
let c=false;
let r= prompt("Enter pL");
let r1= prompt("Enter zL");
if (r===4 && r1===5){
  document.write("<hr>"+r+"<br>"+r1+"<br>"+d);
}
else {
  document.write("<hr>"+r+"<br>"+r1+"<br>"+c);
}

[/code]
В результате, при вводе как правильных, так и неправильных значений,
все время выводится false. Почему?

рони 30.09.2022 08:13

DenisZ,
потому что === , 4 и 5 числа, а r и r1 строки (читать всегда что возвращают любые функции, прежде чем их использовать).
https://learn.javascript.ru/alert-prompt-confirm#prompt
Цитата:

Вызов prompt возвращает текст, указанный в поле для ввода, или null, если ввод отменён пользователем.
Цитата:

Оператор строгого равенства === проверяет равенство без приведения типов.

Другими словами, если a и b имеют разные типы, то проверка a === b немедленно возвращает false без попытки их преобразования.
или так
if (r==4 && r1==5)

или так
if (r==='4' && r1==='5')

или так
if (+r===4 && +r1===5)

DenisZ 30.09.2022 20:02

СПАСИБО!


Часовой пояс GMT +3, время: 14:11.