Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用本地存储添加字符串编号(数学)_Javascript_Html - Fatal编程技术网

Javascript 使用本地存储添加字符串编号(数学)

Javascript 使用本地存储添加字符串编号(数学),javascript,html,Javascript,Html,我正在尝试使用基本数学将数字添加为字符串。我首先将本地存储设置为“0”,然后每次都向其添加“1”。我觉得我走的是正确的道路,但是当我运行这个时,我的结果不是0+1=1,而是在本地存储中得到“01”。我希望每次都能将1添加到现有的本地存储中,这样0+1就可以得到1。下次大约1+1我得到2,2+1我得到3,以此类推 // sets "points" to 0 when user first loads page. if (localStorage.getItem("points") === null

我正在尝试使用基本数学将数字添加为字符串。我首先将本地存储设置为“0”,然后每次都向其添加“1”。我觉得我走的是正确的道路,但是当我运行这个时,我的结果不是0+1=1,而是在本地存储中得到“01”。我希望每次都能将1添加到现有的本地存储中,这样0+1就可以得到1。下次大约1+1我得到2,2+1我得到3,以此类推

// sets "points" to 0 when user first loads page.
if (localStorage.getItem("points") === null){
localStorage.setItem("points", "0");
}

// get points
var totalPoints = localStorage.getItem("points");
// add 1 points to exisiting total
var addPoint = totalPoints +"1";
// set new total
localStorage.setItem("points", addPoint);

您可以通过多种方式将字符串转换为数字(不是详尽的列表):

当您从本地存储获取字符串时,将其转换为数字,进行计算,然后将结果放回原处


编辑-需要记住的是,
+
比其他算术运算符更“有趣”,因为它对字符串值操作数有意义。事实上,JavaScript倾向于对
+
运算符进行字符串解释,因此,如果一侧有字符串,另一侧有数字,则该操作是字符串串联而不是算术加法。

您可以通过多种方式将字符串转换为数字(不是详尽的列表):

当您从本地存储获取字符串时,将其转换为数字,进行计算,然后将结果放回原处


编辑-需要记住的是,
+
比其他算术运算符更“有趣”,因为它对字符串值操作数有意义。事实上,JavaScript倾向于使用
+
运算符的字符串解释,因此如果一侧有一个字符串,另一侧有一个数字,操作是字符串连接,而不是算术加法。

@Pointy localstorage只接受一个stringYes我算出:-)sorry@Pointy localstorage的可能副本只接受一个stringYes我算出:-)sorry@Mageek的可能副本~运算符是位求反运算符。将其应用于字符串一次,将强制将其解释为数字(整数),结果是该值的“补码”。使用两个运算符返回原始整数值。@Mageek是的,我认为应该可以;我把答案扩大了一点。括号很重要!你不应该把
parseInt
parseInt
作为同一件事来表达,
~
+2147483647
处最大,在
-2147483648
处分钟,而
parseInt
可以做
9007199254740992/-9007199254740992
,即使在那之后,它也会失去精度。是的,@Esailija-它们完全不同。@Mageek~运算符是按位求反运算符。将其应用于字符串一次,将强制将其解释为数字(整数),结果是该值的“补码”。使用两个运算符返回原始整数值。@Mageek是的,我认为应该可以;我把答案扩大了一点。括号很重要!你不应该把
parseInt
parseInt
作为同一件事来表达,
~
+2147483647
处最大,在
-2147483648
处分钟,而
parseInt
可以做
9007199254740992/-9007199254740992
,即使在那之后,它也会失去精度。是的,@Esailija-他们完全不同。
var n = s * 1; // s is the string
var n = s - 0;
var n = parseFloat(s);
var n = Number(s);
var n = ~~s; // force to 32-bit integer
var n = parseInt(s, 10); // also integer, precise up to 53 bits