javascript - 难以理解涉及数字加法的函数

标签 javascript

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/

相关文章:

javascript - 在 AJAX 中如何从 onreadystatechange = function () 内部检索变量

javascript - 从日期中提取错误的月份

JavaScript 数组比较并显示另一个数组的值

Javascript - 文件上传,readAsArrayBuffer?

javascript - 带参数的 onclick 调用

php - 我可以等待 location.href 加载页面吗?

javascript - 如何覆盖 flowplayer onError 消息

javascript - Facebook 本地开发不起作用

javascript - 监听链接的点击,即使它在 div 或 img 中

javascript - 太长时如何显示 td 内容?