var foo = {n:1}; (function (foo) { console.log(foo.n); foo.n=3; var foo = {n:2}; console.log(foo.n); })(foo); console.log(foo.n);
1 回答

收到一只叮咚
TA贡献1821条经验 获得超5个赞
这段代码解析的重点在于foo.n=3和var foo = {n:2};。
var foo = {n:1};
(function (foo) {
console.log(foo.n);**此处访问的是全局变量**
foo.n=3;**相当于修改了全局变量的初始值**
var foo = {n:2};**在自执行函数中定义了个局部变量**
console.log(foo.n);**先找自己的作用域中是否存在foo.n存在的话打印出来**
})(foo);
console.log(foo.n);
你的代码在js中是如下编译的(建议看下**你不知的JavaScript上卷,保证你对js作用域会豁然开朗**):
var foo = {n:1};
(function (foo) {
var foo;
console.log(foo.n);
foo = {n:2};
console.log(foo.n);
})(foo);
foo.n=3;
console.log(foo.n);
添加回答
举报
0/150
提交
取消