猿问

关于函数作用域的

var a,b;
(function(){
    alert(a);
    alert(b);
    var a=b=3;
    alert(a);
   alert(b);}
)();
   alert(a);
   alert(b);
 输出结果是undefined,undefined,3,3,undefined,3,  不明白为什么最后两个值的结果是这样的


一城烟水
浏览 1633回答 4
4回答

皓韵儿

你的赋值是在函数里的,只有调用到函数才能赋值。。。。

qyy2499760117_叶子

你的赋值是在函数里的,只有调用到函数才能赋值。

摩诃迦叶

function外的a,b是全局变量,没有赋值。 所以第一,二个alert,输出undefined。 然后你在function里又定义了两个变量a,b,注意,这里的a,b和全局变量a,b不是一个变量。 所以a=b=3,只是给局部变量赋值了,全局变量a,b还是没有值。 最后两个alert输出的是全局变量a,b的值,所以还是undefined。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答