关于JS立即执行函数的疑问

var g = 10;(function g(){g = 20;console.log(g);})();console.log(g)

浏览器输出是:
ƒ g(){g = 20;console.log(g);}
10
但是如果改成这样

var h = 10;(function h(){var h = 20;console.log(h);})();console.log(h)

浏览器输出:
20
10
为什么第一个立即执行函数里面输出的是个函数

阅读 2.7k
2 个回答

第一个g没有定义 它会向上找 找到var g = 10;为止 这里g是全局变量
第二个g定义了 是函数内变量 所以输出的是他本身

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