美文网首页
js的变量提升

js的变量提升

作者: 泉泉泉泉泉泉 | 来源:发表于2019-06-17 17:30 被阅读0次

    举个荔枝:

    function test() {
      a = 5;
      console.log(a);
      console.log(global.a); // node 环境
      var a = 10;
      console.log(a);
    }
    test();
    

    输出结果:

    5
    undefined
    10
    

    再举个荔枝:

    function test2() {
      function a() {}
      var a;
      console.log(a);                //打印出a的函数体
    
      var b;
      function b() {}
      console.log(b);                 //打印出b的函数体 
    
      // !注意看,一旦变量被赋值后,将会输出变量
      var c = 12
      function c() {}
      console.log(c);                 //12
      
      function d() {}
      var d = 12
      console.log(d);                //12
    }
    test2();
    

    输出结果:

    [Function: a]
    [Function: b]
    12
    12
    

    总结:变量解析的顺序

    一般情况下,会按照最开始说的四种方式依次解析

    • 语言内置
    • 形式参数
    • 函数声明
    • 变量声明

    也有例外:

    • 内置的名称arguments表现得很奇怪,看起来应该是声明在形参之后,但是却在声明之前。这是说,如果形参里面有arguments,它会比内置的那个优先级高。所以尽可能不要在形参里面使用arguments;
    • 在任何地方定义this变量都会出语法错误
    • 如果多个形式参数拥有相同的名称,最后的那个优先级高,即便是实际运行的时候它的值是undefined;

    相关文章

      网友评论

          本文标题:js的变量提升

          本文链接:https://www.haomeiwen.com/subject/jqrzfctx.html