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);
    }
  • 相关阅读:
    EF Core 打印日志
    生成各种开源挂件的网址
    .NET Core 原生 Aop,不依赖任何第三方
    .NET Core + Castle.DynamicProxy 拦截
    EF Core 审计日志
    Gitee 接口大全
    VS 批量新增文件头
    Linq 完全指南
    swagger转word
    大型网站架构
  • 原文地址:https://www.cnblogs.com/diyichen/p/11183873.html
Copyright © 2011-2022 走看看