• JS变量声明提升和函数声明提升


    JS代码在执行的时候会先找出执行代码中定义的变量和函数,对其进行声明。

    例1:console.log(a);

    var a = 4;

    此时输出undefined。a变量在执行console.log(a);这条语句之前就已经被定义了只是没有赋值。实际的执行顺序是:var a ; console.log(a);a=4;

    例2:var a = 3;

    function fn(){

      console.log(a);

      var a = 4;

    }

    fn();

    执行输出undefined。在执行fn()函数时由于变量提升实际执行的顺序是:var a;console.log(a);a=4;。所以输出undefined。如果没有在函数中重新定义变量a,则输出a时的值就是全局的a的值为3,因为在输出a时会优先取离奇最近的那个a变量的值。

    例3:

    fn();

    function fn(){

      var a = 4;

      console.log(a);

    }

    执行输出4。因为函数声明提升,会优先执行函数的声明。实际执行的代码:

    function fn(){

      var a = 4;

      console.log(a);

    }

    fn();

    例4:

    fn1();

    var fn1 = function(){

      console.log(4);

    }

    执行结果会报。这里是变量声明会优先,函数声明提升只使用于使用函数声明的方式。这里执行的代码顺序为:var fn1;fn1();fn1 = function(){console.log(4);}

  • 相关阅读:
    codechef FNCS
    bzoj2653 middle
    CF698F Coprime Permutation
    CF538H Summer Dichotomy
    CF930E Coins Exhibition
    CF468D Tree
    CF528E Triangles3000
    BZOJ 4066: 简单题
    BZOJ 4300: 绝世好题
    BZOJ 4520: [Cqoi2016]K远点对
  • 原文地址:https://www.cnblogs.com/maycpou/p/12247741.html
Copyright © 2020-2023  润新知