Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么返回的是NaN而不是7?_Javascript - Fatal编程技术网

Javascript 为什么返回的是NaN而不是7?

Javascript 为什么返回的是NaN而不是7?,javascript,Javascript,var总和=2; 函数addFive(){ var总和=总和+5; console.log(sum);//为什么不是7 } 添加五个()您再次在函数中声明变量sum。这与JavaScript中的作用域有关 请查看以下内容以了解更多信息 在本例中,局部变量(在函数中声明的变量)由JavaScript解析器获得优先级。这种行为称为“阴影”。它从当时执行的最里面的作用域开始,一直持续到找到第一个匹配项为止,无论外部级别中是否有其他同名变量。您再次在函数中声明变量sum。这与JavaScript中的作用

var总和=2;
函数addFive(){
var总和=总和+5;
console.log(sum);//为什么不是7
}

添加五个()
您再次在函数中声明变量
sum
。这与JavaScript中的作用域有关

请查看以下内容以了解更多信息


在本例中,局部变量(在函数中声明的变量)由JavaScript解析器获得优先级。这种行为称为“阴影”。它从当时执行的最里面的作用域开始,一直持续到找到第一个匹配项为止,无论外部级别中是否有其他同名变量。

您再次在函数中声明变量
sum
。这与JavaScript中的作用域有关

请查看以下内容以了解更多信息


在本例中,局部变量(在函数中声明的变量)由JavaScript解析器获得优先级。这种行为称为“阴影”。它从当时执行的最里面的作用域开始,并一直持续到找到第一个匹配项为止,无论外部级别中是否存在同名的其他变量。

,因为函数中声明了局部变量和。 您必须使用

var总和=2;
函数addFive(){
var sum=此.sum+5;
控制台日志(总和);
}

添加五个(),因为函数中声明了局部变量和。 您必须使用

var总和=2;
函数addFive(){
var sum=此.sum+5;
控制台日志(总和);
}

添加五个()为了让事情更清楚,您的代码基本上是这样读的:

var总和=2;
函数addFive(){
var sum;//隐式等于未定义
sum=sum+5;//sum=undefined+5=NaN
console.log(sum);//NaN
}

添加五个()为了让事情更清楚,您的代码基本上是这样读的:

var总和=2;
函数addFive(){
var sum;//隐式等于未定义
sum=sum+5;//sum=undefined+5=NaN
console.log(sum);//NaN
}


添加五个()sum
。在
var-sum=sum+5之前删除
var
函数内部新声明的变量
sum
与外部
sum
有阴影。引入新变量时只需
var
不带
var
,这样您就不会以相同的名称声明新变量。因为您在函数中被声明为局部变量
sum
。在
var-sum=sum+5之前删除
var
函数内部新声明的变量
sum
与外部
sum
有阴影。引入新变量时只需
var
不带
var
,这样您就不会以相同的名称声明新变量。var sum=2;函数addFive(){console.log(sum);}addFive();这返回2。。我不明白。。为什么我不能将变量再次声明为局部作用域?@SubhamBisoyi
为什么我不能将变量再次声明为局部作用域?
,你可以,你已经,这就是为什么你的答案是2。否则,您需要的是全局范围。@SubhamBisoyi或,您甚至可以声明一个局部变量,但您必须为它使用不同的名称,使其workvar sum=2;函数addFive(){console.log(sum);}addFive();这返回2。。我不明白。。为什么我不能将变量再次声明为局部作用域?@SubhamBisoyi
为什么我不能将变量再次声明为局部作用域?
,你可以,你已经,这就是为什么你的答案是2。否则,您需要的是全局作用域。@或者,您甚至可以声明一个局部变量,但您必须为它使用不同的名称,以使其工作使用
在这里很混乱,并且在严格模式下将失败。现在我明白了。非常感谢。我如何才能将这个问题标记为已回答?希望您永远不要开始使用现代js模块,或者
使用strict因为您可能需要修复相当多的代码:)在中使用
window.sum将令人沮丧nodejs@Mark正是出于这个原因,您可能需要查看
globalThis
。在这里使用
这个
很混乱,在严格模式下会失败。现在我明白了。非常感谢。我如何才能将这个问题标记为已回答?希望您永远不要开始使用现代js模块,或者
使用strict因为您可能需要修复相当多的代码:)在中使用
window.sum将令人沮丧nodejs@Mark正是出于这个原因,您可能需要查看
globalThis