关于作用域的一点疑问...
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
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