美文网首页
js函数声明提升和变量声明提升

js函数声明提升和变量声明提升

作者: 技术体验师_萦回 | 来源:发表于2024-01-11 23:07 被阅读0次

首先给出结论,然后再举例

结论

提升:函数声明和变量声明提升;函数赋值和变量赋值不提升
优先级: 函数>变量
特殊情况:if 语句中,函数声明提升时,会将前面的变量赋值一起提升出去

声明提升,赋值不提升

举例1:函数

console.log(foo);
function foo(){
    console.log("函数声明1");
}
var foo = function(){
 console.log("函数声明2");
}

输出为:

function foo(){
    console.log("函数声明");
}

举例2:变量

console.log(foo);
var foo;
foo = "变量";

输出为:

undefined

优先级

举例1

console.log(foo);
function foo(){
    console.log("函数声明");
}
var foo = "变量";

输出为:

function foo(){
    console.log("函数声明");
}

代码实际是:

function foo(){
    console.log("函数声明");
}
var foo;
console.log(foo);   
foo = "变量";

特殊情况:if 语句中,函数声明提升时,会将前面的变量赋值一起提升出去

      console.log(a); // undefined
      if (true) {
         a = 1;
         function a() {} // 把1提升出去了 
         a = 2;
       }
      console.log(a); // 1

看个例子

      console.log("1、value: " + a, " type: " + typeof a);
      var a = 0;
      if (true) {
        console.log("2、value: " + a, " type: " + typeof a);

        a = 1;
        console.log("3、value: " + a, " type: " + typeof a);

        a = 2;
        console.log("4、value: " + a, " type: " + typeof a);

        function a() {}
        a = 3;
        console.log("5、value: " + a, " type: " + typeof a);

        a = 4;
        console.log("6、value: " + a, " type: " + typeof a);
      }
      console.log("7、value: " + a, " type: " + typeof a);

输出结果如下:

      /***
       * 1、value: undefined  type: undefined
       * 2、value: function a() {}  type: function
       * 3、value: 1  type: number
       * 4、value: 2  type: number
       * 5、value: 3  type: number
       * 6、value: 4  type: number
       *  7、value: 2  type: number
       *
       * ***/

相关文章

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

    JS代码分为两个阶段:编译阶段和执行阶段; 编译阶段:会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作...

  • js中变量和函数声明的提升

    二 、 js中变量和函数声明的提升

  • JS笔记 命名问题

    JS中函数和变量重名时,后声明的覆盖先声明的,后赋值的覆盖先赋值的。 变量提升和函数提升时,变量的声明是在函数的声...

  • 猫眼

    var变量提升,函数声明提升,消除变量声明提升(let); 高阶函数,函数式的编程,柯里化 原型链继承,js面向对...

  • JS中的提升

    JS中包含两种提升,变量提升和函数提升。 变量提升 变量提升只能是var或者function声明的变量或者函数,l...

  • 引用类型

    变量提升和函数声明提升   函数声明提升就是把函数声明提升到函数声明所在作用域中(或者说一个函数体内)的顶端,变量...

  • js面试题

    1、js 数据类型 基本数据类型 引用数据类型 2、js 变量和函数声明的提升 在js中变量和函数的声明会提升到最...

  • js变量声明提升与函数表达式

    1.变量声明提升 js引擎会把变量声明与函数声明都提升到当前函数的顶部。eg: js引擎编译为 2.函数表达式 对...

  • JavaScript中函数声明提升

    运行结果:(chrome 54.0+、IE11) js中变量声明和函数声明会在解析的时候提升【参考MDN变量提升】...

  • 浏览器学习笔记-JS执行

    变量提升 变量提升原理浏览器对js是先编译后执行,在编译过程中,js中的变量声明会被提升到代码段落前面。函数声明和...

网友评论

      本文标题:js函数声明提升和变量声明提升

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