JS里函数内部和外部声明的Var 变量重复问题

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

b = 15;

console.log(b); // 15

}

 

A();


 

//变量变形

function A(){

console.log(a); //报错


版权声明:本文为u011565547原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。