扫码关注官方订阅号
var z = 10; function foo(){ console.log(z) } (function (fn){ var z = 20; fn(); })(foo)
为啥输出的是10?
10
业精于勤,荒于嬉;行成于思,毁于随。
fn 函数需要查找变量 z,由于JavaScript 采用词法作用域,fn 函数被解析的时候是在全局作用域,所以 z 是全局作用域中的 10,而非 IIFE 里面的 z。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
fn 函数需要查找变量 z,由于JavaScript 采用词法作用域,fn 函数被解析的时候是在全局作用域,所以 z 是全局作用域中的 10,而非 IIFE 里面的 z。