这段代码为什么输出的是 1 2 3

varfoo={n:1};
(function(foo){
console.log(foo.n);
foo.n=3;
varfoo={n:2};
console.log(foo.n);
})(foo);
console.log(foo.n);
慕桂英3389331
浏览 514回答 2
2回答

噜噜哒

这段代码解析的重点在于foo.n=3和varfoo={n:2};。varfoo={n:1};(function(foo){console.log(foo.n);**此处访问的是全局变量**foo.n=3;**相当于修改了全局变量的初始值**varfoo={n:2};**在自执行函数中定义了个局部变量**console.log(foo.n);**先找自己的作用域中是否存在foo.n存在的话打印出来**})(foo);console.log(foo.n);你的代码在js中是如下编译的(建议看下**你不知的JavaScript上卷,保证你对js作用域会豁然开朗**):varfoo={n:1};(function(foo){varfoo;console.log(foo.n);foo={n:2};console.log(foo.n);})(foo);foo.n=3;console.log(foo.n);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript