Я только начал изучать 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);
Продвижение своими сайтами как стратегия роста и независимости