【问题标题】:Can anyone explain why this code concatenates rather than adds the numerical values?谁能解释为什么这段代码连接而不是添加数值?
【发布时间】:2020-02-14 00:55:41
【问题描述】:

所以,首先,我知道这段代码很乱,请多多包涵,但谁能解释为什么这会继续连接输入的信息,而不是在通过parseInt() 后添加数值?

var sol = 0;
var n = 0;

while(n !== null)
{

parseInt(n = prompt("Please enter a number to be added onto stack"));
  if(n != null || n != NaN)
  {
    sol = parseInt(sol);
    sol += n;
  }

}
console.log(sol);

【问题讨论】:

  • 你必须设置n = parseInt(...)。函数在 JS 中不会以这种方式修改变量。
  • @bbbbbb 我知道我在做一些愚蠢的事情哈哈,谢谢你的帮助,我很感激!

标签: javascript concatenation addition parseint


【解决方案1】:

prompt() 返回一个字符串。

parseInt() 接受一个字符串并返回一个数字。

您没有对第一个 parseInt 的返回值做任何事情。这意味着n 是一个字符串。因此,当您执行sol += n 时,您将字符串和数字相加,而 javascript 假定您打算将字符串连接在一起,因为字符串和数字的数学运算没有任何意义。

你可能打算这样做:

n = parseInt(prompt("Please enter a number to be added onto stack"));

【讨论】:

  • 根据背景,可能值得一提的是 JS 函数不能修改它们的参数。 JS 通过对象引用传递参数。如果您习惯于更改某些变量状态的函数,这可能会让人感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 2015-07-08
  • 2022-12-04
  • 1970-01-01
  • 2017-04-22
  • 2011-02-11
相关资源
最近更新 更多