function foo(a) {
var b = 2;
function c() {}
var d = function() {};
b = 3;
}
foo(1);
代码执行之后
AO = {
arguments: {
0: 1,
length: 1
},
a: 1,
b: 3,
c: function c(){},
d: reference to FunctionExpression "d"
}
请问为什么执行代码之后,b会变成3 b不是VO全局对象里面的吗?
你认为这个第二个
a = 2
是操作全局变量?你只需要记住操作变量都是先从局部作用域找,局部作用域有这个变量则操作局部变量,局部没有继续向外找,然后一层层向外找直到全局
你这个函数里面已经声明了一个局部变量
b
,所有在本函数内对b
的操作都是局部的