javascript - 哪位大佬可以帮忙详细解释这段代码运行的过程
迷茫
迷茫 2017-04-11 12:28:32
[JavaScript讨论组]
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)
依次打印1 2 3
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(1)
PHP中文网
var foo={n:1}; //全局作用域下的foo变量,是一个对象,引用类型

//然后是一个立即执行的匿名函数,传入上面的foo,由于是引用类型
//所以匿名函数参数的foo即是对上面那个foo的引用
(function(foo){
    console.log(foo.n);//这里的foo就是全局作用域下的foo,n为1,所以第一次打印出1
    foo.n=3;//这里是设置全局作用域下的foo中n属性,将n变为3
    var foo={n:2};//这里是在这个匿名函数作用域内新建的一个foo变量,由于作用域不同,不覆盖全局作用域下的foo变量
    console.log(foo.n);//这里由于是在匿名函数作用域内,首选打印匿名函数作用域内的foo.n,也就是上面的2
})(foo);

console.log(foo.n);//最后,由于匿名函数中改变了全局作用域中的foo.n为3,所以打印出3
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号