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

      

     

  • 相关阅读:
    oracle 聚合函数 LISTAGG ,将多行结果合并成一行
    oracle 数据库对于多列求最大值
    Java 简单的rpc 一
    centos7 安装php7
    win10下VM 中centos 安装共享文件
    CentOS7 cannot find a valid baseurl for repo base
    分布式事务
    利用虚拟映射文件加密大文件
    动态代理
    c++ 11 lambda表达式
  • 原文地址:https://www.cnblogs.com/superjishere/p/11675271.html
Copyright © 2011-2022 走看看