首页 > 解决方案 > 为什么它返回 NaN 而不是 7?

问题描述

var sum = 2;

function addFive() {
  var sum = sum + 5;
  console.log(sum); //why not 7
}
addFive();

为什么它返回NaN而不是 7?

标签: javascript

解决方案


为了使事情更清楚,您的代码基本上是这样读取的:

var sum = 2;

function addFive() {
  var sum; // implicitly equal to undefined
  sum = sum + 5; // sum = undefined + 5 = NaN
  console.log(sum); // NaN
}
addFive();

如您所见,您正在重新声明sum并且它设置为undefined. 因此,当您尝试添加时2undefined您将得到NaN(不是数字)。

相反,您可以sum通过不在函数中重新定义外部变量来引用外部变量,而只需重新分配其值:

var sum = 2;

function addFive() {
  sum = sum + 5; // sum = 2 + 5 = 7
  console.log(sum); // 7
}
addFive();


推荐阅读