猿问

这段代码为什么输出的是 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); 


喵喔喔
浏览 488回答 1
1回答

收到一只叮咚

这段代码解析的重点在于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); 
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答