var b = 99;
function A(){
console.log(b); //undefined
var b = 15;
console.log(b);
}
A();
//有人会有这样的疑惑,为什么第一个输出的是undefined而不是99呢
// 这又要谈到作用域了。
// 函数在执行时,会先在自己的函数体里查询变量,如果没有,才会一级一级往上查找。函数fun()在执行时,输出第一个变量a是undefined是因为它现在自己的执行环境里查询到变量a已声明,即变量提升(即变量可以提前声明但是赋值是不可以的),此时就输出了undefined。
// 以上函数的原型实际是这样的:
var b = 99;
function A(){
var b;
console.log(b); //undefined