【发布时间】:2021-05-29 03:21:11
【问题描述】:
我知道这是一个全局变量(例如函数内部的原始变量)(局部变量)的问题。全局变量不会被局部变量覆盖。 喜欢:
let a = 10;
function increase1(a){
a++; }
increase1(a);
console.log('a = ',a);
所以这行不通。它给了我们 a = 10 下面的代码有效,它给了我们a = 11:
let a = 10;
function increase2(){
a++;}
increase2(a);
console.log('a = ',a);
因为它是一样的:
let a = 10;
a++;
console.log('a = ',a);
但为什么这与 increase1 的行为方式相同?
let a = 10;
function increase3(x){
x++; }
increase3(a);
console.log('a = ',a);
为什么当我尝试这个时,我得到“undefined”?
console.log('a = ',increase3(a));
谢谢。
【问题讨论】:
-
您的第三个示例是否缺少
let a = 10;? -
increase3只增加局部变量x,就像increase1只增加局部变量a。当然,在这个例子中没有外部变量x被遮蔽,但这并不重要 - 遮蔽的全部意义在于功能不依赖于其他地方(外部)定义的变量。跨度> -
"为什么当我登录
increase3(a)时,我得到"未定义"?" - 因为这是函数调用在函数没有return语句时返回的内容 -
所有的例子都应该是一样的 let a = 10;... 我编辑了所有的例子。希望我的疑虑现在更清楚了
标签: javascript variables undefined shadowing