难以理解涉及数字加法的功能
Having trouble understanding function involving number addition
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
值。同样,一元+
运算符也强制将其操作数转换为数字。
将值乘以 1 是一种确保它被转换为数字的方法(如果不是(。 当你在 JavaScript 中添加两个东西时,如果其中一个是字符串,那么该操作将被评估为字符串连接,而不是加法。 由于 nstr
中的值是正则表达式匹配的结果,因此它们是字符串值,而不是数字值。
您可以将值乘以 1 以确保将其视为数字。 规范的JavaScript方法是使用一元+
运算符(total += +(nstr[i]);
(。
> "1"+1
"11"
> 1+"1"
"11"
> 1+1
2
> ("1"*1)+1
2
> (+"1")+1
2
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 将数字转换为一定数量的硬币
- 如何防止网页加载后自动启动功能
- 这个javascript代码有什么错误,它有将数字转换为单词的功能
- 我的数字检查器功能不起作用,为什么
- Javascript数字验证功能起作用+需要建设性的批评
- 计数功能上的数字划分
- 修改地板/天花板功能以处理 1 以外的数字
- 将 1 到 num 的所有数字相加的功能
- 从数字键盘中删除显示和消失功能
- 按enter键输入数字功能
- 独特的数字计数器功能
- 难以理解涉及数字加法的功能
- 在JavaScript中向数字添加标志而不影响其功能的最简单方法是什么?
- 所需的输入类型数字向上和向下箭头按住以增加span和输入文本的功能
- 为什么我的数字时钟功能泄漏内存