javascript - 这段代码为什么输出的是 1 2 3
本文介绍了javascript - 这段代码为什么输出的是 1 2 3的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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);
解决方案
这段代码解析的重点在于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);
这篇关于javascript - 这段代码为什么输出的是 1 2 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文