变量提升以及作用域

 1 console.log(v1);
 2 var v1 = 100;
 3 function foo() {
 4     console.log(v1);
 5     var v1 = 200;
 6     console.log(v1);
 7 }
 8 foo();
 9 console.log(v1);
10 // undefined  undefined 200  100

一共有四次打印的动作,分别来看:

  1. 第一次打印,由于存在变量提升,第二句中的var v1=100会被提到顶部进行声明,变成var v1; 只声明未定义,当然是undefined。
  2. 第二次打印,是由于第八句调用了foo函数,进入foo会发现和第一条情况一样,不再赘述。
  3. 第三次打印,在本句话之前有声明有定义,此时v1=200,打印200。
  4. 第四次打印,由于函数内部所声明和定义的变量是局部变量,顾名思义就是不能拿出来用,而全局变量在第二句就定义好了,所以呢,值为100。
posted @ 2020-12-01 09:24  呈心者  阅读(96)  评论(0编辑  收藏  举报