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

查看:88
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆