zoukankan      html  css  js  c++  java
  • js变量提升

    在非严格模式下,JavaScript中存在变量提升的特点。

    1. 原因

    JavaScript的工作原理是先编译再执行,在编译过程中,解释器会把所有声明“移动”到所在作用域的最上面,而赋值或其他逻辑会留在原地,这就是变量提升。

    例如

    foo();
    function foo(){
      console.log(a); // undefined
      var a = 2;  
    }

    在编译后将被理解为下面的形式

    function foo(){
      var a;
      console.log(a); // undefined
      a = 2;  
    }
    foo();

    2.函数优先

    在提升过程中,函数声明将首先提升,然后才是变量。只有函数声明( function a(){} )才会被提升,函数表达式( var a = function b(){} )不会提升。如果存在相同的声明,相同的变量声明将被忽略;相同的函数声明,后面的将会覆盖前面的。

    例如

    foo(); // 1
    var foo;
    function foo(){
      console.log(1);
    }
    foo = function(){
      console.log(2);
    }

    将被理解为

    function foo(){
      console.log(1);
    }
    foo(); // 1
    foo = function(){
      console.log(2);
    }
  • 相关阅读:
    CF1264E Beautiful League 解题报告
    CF1411G No Game No Life 解题报告
    Data structure on Bitcoin
    bitcoin Cryptography
    弹性布局Flex的基本语法
    Linq操作list
    dt某字段赋值
    List 添加数据
    dt 转 json 转实体
    队列
  • 原文地址:https://www.cnblogs.com/diyichen/p/11183873.html
Copyright © 2011-2022 走看看