Я только начал изучать JS, до этого (как и сейчас) кодю на C#. Для меня неявная типизация JS - просто ужас! Появился конкретный кейс, код успешно не работает.
if (step + direction < 0) {
document.writeln("outdown");
} else {
step += direction;
document.writeln(step);
}
При этом step в начале выполнения 0, а direction -1. Вместо надписи outdown выводится "0-1". Я понимаю, что это происходить из-за того, что одна переменная не int, а string. Как это починить я не знаю.
Пример, который я составил по вашему описанию работает корректно
let step = 0;
let direction = -1;
if (step + direction < 0) {
document.writeln("outdown");
} else {
step += direction;
document.writeln(step);
}
А вот этот выводит указанный Вами текст:
let step = "0";
let direction = -1;
if (step + direction < 0) {
document.writeln("outdown");
} else {
step += direction;
document.writeln(step);
}
Все дело в том, что во втором примере, а значит и у вас step
не 0
а "0"
, т.е. строка;
решать это можно либо неявным приведением к Number:
step = +step;
или явно вызывая функцию Number:
step = Number(step);
У меня есть функция:
Я не очень сильна в JS, помогите пожалуйста решить вопросЕсть div, который нужно отображать каждые условно 5 минут
Есть несколько товаров с кнопкой заказать, при нажатии ничего не происходит, и ещё вопрос как можно передать название именно того товара...
В стандарте ES-2015 появилась возможность задавать параметры функции по умолчанию, выглядит это так: