为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2019-05-25 14:38:35
varfoo={n:1};(function(foo){console.log(foo.n);foo.n=3;varfoo={n:2};console.log(foo.n);})(foo);console.log(foo.n);
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

这段代码解析的重点在于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);
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 490 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信