ru.javascript.info icon indicating copy to clipboard operation
ru.javascript.info copied to clipboard

Задание if ? else

Open Ripple-activator opened this issue 3 years ago • 1 comments

Этот код при вводе на оба запроса "1" выдаёт "Много". Почему?

let a = prompt (`Введите a`);
let b = prompt (`Введите b`);
let result = (a + b < 4) ? 'Мало' : 'Много';
alert (result);

Ripple-activator avatar Jun 10 '22 23:06 Ripple-activator

Вижу, вы в комментах главы уже спросили и там ответы дали. Наверное в issues открывать подобные вопросы не стоит. И эту issue нужно закрыть, полагаю.

Но на всякий случай ответ такой: prompt возвращает строку, поэтому при a + b вместо сложения 1 + 1 = 2 получается конкатенация строк "1" + "1" = "11", а потом при сравнении происходит «численное преобразование» строки "11" к числу 11, и далее сравнение 11 < 4 возвращает false, присваивая 'Много' в result.

Чтобы этого избежать, нужно преобразовать переменные a и b в числа, так: let a = Number(prompt("Введите a")); ...так: let a = +prompt("Введите a"); ...или так: let result = (Number(a) + Number(b) < 4) ? "Мало" : "Много";

sFlcn avatar Jun 14 '22 23:06 sFlcn