关于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定义了 是函数内变量 所以输出的是他本身

推荐问题
宣传栏