扩展:
- 解释为什么打印的是倒数第二个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