我试图存储一个我将在javascript中操作很多的int,但是我甚至无法正确地存储它以保持它的价值。
if (localStorage.getItem("localValue") === null || undefined ) {
var preValue = 0;
localStorage.setItem("localValue",preValue);
var value = JSON.parse(localStorage.getItem("localValue"));
console.log("newly set variable!");
}
else
{
var value = JSON.parse(localStorage.getItem("localValue"));
console.log("there was one here before!");
}
每次刷新页面时,它都会重置为0.但我希望它能保留前一个"会话的价值。在刷新页面之后。
答案 0 :(得分:0)
附加|| undefined
无效。您可以在null
中使用与if
的非严格比较。
不需要JSON.parse
,因为您检索到的值将是数字的字符串表示形式。
您需要将您读取的值转换为数字,这可以使用一元+
进行:
var value = localStorage.getItem("localValue");
if (value == null) {
value = 0;
localStorage.setItem("localValue", 0);
console.log("newly set variable!");
} else {
value = +value; // convert to number
console.log("there was one here before!", value);
}
当您修改value
时,可能通过用户输入,然后执行:
localStorage.setItem("localValue", value);
虽然您传递了一个数字,但它将存储为字符串。
关于您的gainValue
功能:
function gainValue() {
value = value + Math.floor((Math.random() * 10) + 1);
JSON.parse(localStorage.setItem("localValue",value));
}
JSON.parse
再次无效:您不会使用结果,也不需要它。 value +
表达式只有在您将value
转换为数字时才能正常工作,如上所述,否则+
将充当字符串连接符。
答案 1 :(得分:0)
将您的条件更改为
if (!!localStorage.getItem("localValue") ) {
var value = JSON.parse(localStorage.getItem("localValue"));
console.log("there was one here before!");
}
else
{
var preValue = 0;
localStorage.setItem("localValue",preValue);
var value = JSON.parse(localStorage.getItem("localValue"));
console.log("newly set variable!");
}
它将检查该值既不是null也不是undefined和false