扩展:
- 解释为什么打印的是倒数第二个a的值?
原因:大括号中第一个a本级没有找到声明, 默认是全局(即重写外部的a)。定义完函数a, 产生了块级的a, 即大括号中的a是30;var a = 10;{a = 99;function a() {}a = 30;}console.log(a) // 99
var a = 10;{a = 99;function a() {}a = 30;console.log(a) // 30}
var a = 10;console.log(a) // 10{a = 99;function a() {}a = 30;}
参考:
https://juejin.im/post/6863025980534063118
http://eux.baidu.com/blog/fe/%e5%a6%82%e4%bd%95%e7%bb%95%e8%bf%87%e9%9d%a2%e8%af%95%e9%a2%98%e4%b8%ad%e7%9a%84%e5%b0%8f%e5%9d%91
