zoukankan      html  css  js  c++  java
  • 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);
     }
    

      

     

  • 相关阅读:
    七、Vue Cli+ApiCloud
    六、取消eslint 校验代码
    六、匿名方法
    五、vue中export和export default的使用
    四、Vue CLI-异步请求(axios)
    接口自动化测试(7)
    selenium 封装
    flask 动手写的接口平台
    flask入门篇
    python 自动化接口测试(6)
  • 原文地址:https://www.cnblogs.com/superjishere/p/11675271.html
Copyright © 2011-2022 走看看