JS预解析与变量提升

Posted 放弃不难,但坚持一定很酷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS预解析与变量提升相关的知识,希望对你有一定的参考价值。

预解析

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);
 }

  

 

以上是关于JS预解析与变量提升的主要内容,如果未能解决你的问题,请参考以下文章

函数和变量中的预解析

js预解析

js预解析

Javascript 的变量提升与预解析

JS执行顺序预编译

JavaScript预解析