@RainoYT

Почему так прибавляется единица к переменной JS?

У меня есть переменная cords.
let cords = sessionStorage.getItem('scrollPosition');


И интересная штука получается. Предположим, cords у нас изначально равна 1000
cords = 1000
cords-1 = 999
cords+1 = 10001


А если cords изначально 0, то:
cords = 0
cords-1 = -1
cords+1 = 1


Как это работает, а главное, как сделать, чтобы это работало корректно?
  • Вопрос задан
  • 124 просмотра
Решения вопроса 4
hzzzzl
@hzzzzl
как сделать, чтобы это работало корректно

coords = '1000'
console.log(+coords + 1)  // перевод в число
// 1001


(╯°□°)╯︵ ┻━┻
5ec9478547369569657388.jpeg
Ответ написан
Комментировать
@paper_castle
Фрилансер
Используйте явное преобразование типов.
При разнице cords приводится к int, а при + получается не сумма, а конкатенация.
Ответ написан
Комментировать
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Данные в sessionStorage хранятся как строки.
https://learn.javascript.ru/type-conversions
Ответ написан
Комментировать
@n1ksON
мидл
По всей видимости cords обладает строковым типом данные (string). И когда вы прибавляете к строке 1, он добавляет её как строку.
Вот такой костыль можно применить, чтобы избавиться от этого:
cords*1+1 = 1001
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы