js输出值问题

    var z = 10;
    function foo(){
      console.log(z)
    }

    (function (fn){
      var z = 20;
      fn();
    })(foo)

为啥输出的是10?

阅读 1.8k
1 个回答

fn 函数需要查找变量 z,由于JavaScript 采用词法作用域,fn 函数被解析的时候是在全局作用域,所以 z 是全局作用域中的 10,而非 IIFE 里面的 z。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题