JS预解析与变量提升

匿名 (未验证) 提交于 2019-12-03 00:14:01

预解析

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

预解析过程:

  1. 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。

  2. 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。

  3. 先提升var,在提升function。

JavaScript的执行过程

 // 案例1  var a = 25;  function abc() {    alert(a);     var a = 10;  }  abc();      // 案例2  console.log(a);  function a() {    console.log('aaaaa');  }  var a = 1;  console.log(a);

变量提升

  • 变量提升

    定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升。

  • 函数提升

    JavaScript解析器首先会把当前作用域的函数声明提前到整个作用域的最前面

 // 1、-----------------------------------  var num = 10;  fun();  function fun() {    console.log(num);    var num = 20;  }  //2、-----------------------------------  var a = 18;  f1();  function f1() {    var b = 9;    console.log(a);    console.log(b);    var a = '123';  }  // 3、-----------------------------------  f1();  console.log(c);  console.log(b);  console.log(a);  function f1() {    var a = b = c = 9;    console.log(a);    console.log(b);    console.log(c);  }

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!