У меня возникает проблема, в которой целочисленная переменная, полученная из LocalStorage, будет действовать ненормально в зависимости от того, какая операция сначала выполняется над ней.localStorage производная переменная действует как целое при вычитании, но строка при первоначальном добавлении
Если первая выполненная операция является вычитанием, переменная будет действовать как целое число. Любые дальнейшие операции выполняются как обычно.
Если первая выполненная операция является дополнением, однако она будет обрабатывать переменную как строку. Любые дополнительные дополнения будут обрабатывать его также как строку, пока не будет выполнена первая операция вычитания.
Вот код в вопросе (Прости меня за все предупреждения):
<script type="text/javascript">
var line = 125;
if (localStorage.getItem("gtLine") !== null) {
line = localStorage.getItem("gtLine");
}
function shrink() {
alert(line);
line -= 10;
alert(line);
localStorage.setItem("gtLine", line);
}
function grow() {
alert(line);
line += 10;
alert(line);
localStorage.setItem("gtLine", line);
}
function reset() {
line = 125;
localStorage.setItem("gtLine", line);
alert(line);
}
</script>
<button onClick="javascript:shrink();">Shrink</button>
<button onClick="javascript:grow();">Grow</button>
<button onClick="javascript:reset();">reset</button>
И шаги для воспроизведения проблемы:
Сначала нажмите усадку и расти кнопки, в любом порядке, который вам подходит, чтобы увидеть, что скрипт работает.
Затем обновите страницу, чтобы она перезагружала переменную из localStorage, нажмите кнопку усадки, а затем нажмите кнопки усадки и увеличения и убедитесь, что они все еще работают.
Теперь обновите снова, но на этот раз нажмите кнопку «Увеличить». Функция роста теперь обрабатывает переменную как строку, а функция усадки остается неизменной.
Значение в 'localStorage' хранится в виде строки. '- =' оператор передает 'String' в' Number'. – guest271314