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
。