function NumberAddition(str) {
var nstr = str.match(/[0-9]+/g);
var total = 0;
if (nstr !== null)
for (var i = 0; i < nstr.length; i++) {
total += nstr[i]*1;
}
// code goes here
return total;
}
我在 coderbyte.com 上查看答案,这是其中之一。我的问题是关于 total += nstr[i]*1
部分。如果我删除 *1
答案将连接到“2344”。然而答案应该是23+4+4=31。这是为什么?
最佳答案
*1
强制将 nstr[i]
中的字符串转换为数字。另一种方法是
total += +nstr[i];
*
(乘法)运算符只对数字有意义,语言定义规定当它的参数不是数字时,应该进行转换。当然,如果 nstr[i]
不是真正的数字(在您的情况下不太可能,如果不是不可能的话),那么结果将是一个 NaN
值。同样,一元运算符 +
也强制将其操作数转换为数字。
关于javascript - 难以理解涉及数字加法的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613684/