为什么返回NaN而不是7?

Sub*_*oyi 1 javascript

var sum = 2;

function addFive() {
  var sum = sum + 5;
  console.log(sum); //why not 7
}
addFive();
Run Code Online (Sandbox Code Playgroud)

为什么返回NaN而不是7?

Nic*_*ons 5

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

var sum = 2;

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

如您所见,您正在重新声明,sum并将其设置为undefined。所以,当你尝试,并添加2undefined您会得到NaN(非数字)。

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

var sum = 2;

function addFive() {
  sum = sum + 5; // sum = 2 + 5 = 7
  console.log(sum); // 7
}
addFive();
Run Code Online (Sandbox Code Playgroud)