关于作用域的一点疑问...
javascript吧
全部回复
仅看楼主
level 4
黑武士纟
楼主
var a=1;
function b(){
var a=5;
return a;
};
b();
alert(a);
为啥输出的是1啊
2020年08月07日 14点08分
1
level 4
黑武士纟
楼主
var a=1;
function b(){
a=5;
return a;
};
b();
alert(a);
输出为啥是5啊
2020年08月07日 15点08分
2
level 12
丶影-奈斯
...
(局部变量和全局变量的关系 这应该是基础 大佬这是还没学js?)
第一个b函数里面的a是局部变量(有var) 跟外面那个a没什么关系
第二个b函数里面是全局变量(没var)a的赋值(重新赋值)
2020年08月08日 00点08分
3
黑武士纟
老夫不懂什么react,spa,mvvm,node.js,koa,jq,老夫写代码就是ctrl+c,ctrl+v一把梭
2020年08月08日 14点08分
黑武士纟
明白你的意思,第一个函数如果function里面有一个console.log(a),显示的是5。在外面console.log(a)显示的是1,我不懂的是function不是return了吗?这两个a再不一样,变量名一样不该覆盖吗...第二个函数function里面没var是变量提升了,那function的返回值return返回的a是什么
2020年08月08日 14点08分
丶影-奈斯
@黑武士纟
复制粘贴真好用!!!
2020年08月08日 14点08分
丶影-奈斯
@黑武士纟
你可能误会了什么 你的返回值b() 又没赋值给a
2020年08月08日 14点08分
level 1
杨柳xiao
1、第一个 b函数中的a有 var声明为局部变量,所以它与外面的全局变量a没有关系,alert(a);弹出的是window作用域下的全局a,所以为1。
2、第二个b函数中的 a变量为全局,因为函数在var a变量的后面所以改变了a的值,所以就弹出5了
2020年08月12日 22点08分
6
黑武士纟
么么哒
你说的没错
2020年08月13日 04点08分
1