Web前端开发人员要知道的——JavaScript预解析

预解析

JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程

预解析过程:

  1. 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
  2. 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。
  3. 先提升var,在提升function(顺序var在最上面,然后是function)

1.例子:

    f1();
  console.log(c);    	//9
  console.log(b);      //9
  console.log(a);	   //报错
  function f1() {
      var a = b = c = 9;
      console.log(a);  //9
      console.log(b);	//9	
      console.log(c);	//9
  }

预解析后:

function f1() {
  var a;//有var是局部变量,函数外不能访问
  a=9;
  // 提升后有没有var,是隐式全局变量,所以函数外可以访问
  b=9;
  c=9;
  console.log(a);//9
  console.log(b);//9
  console.log(c);//9
}
f1();
console.log(c);//  9
console.log(b);// 9
console.log(a);//报错

2.例子:

  f1();   //结果最终是报错
   var f1=function () {
      console.log(a);
      var a=10;
   };

预解析后:

 //分析
   var f1; //预解析,所以f1只进行了声明,f1里面没有内容,
   f1();   //报错
   f1=function () {
       console.log(a);
       var a=10;
   };
发布了47 篇原创文章 · 获赞 340 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_44253336/article/details/97629716