美文网首页
Js中的变量提升和函数提升

Js中的变量提升和函数提升

作者: dream_Q | 来源:发表于2020-12-02 10:35 被阅读0次


    1.提升的概念

    简单说就是在js代码执行前引擎会先进行预编译,预编译期间会将变量声明与函数声明提升至其对应作用域的最顶端。

    2.变量提升

    例:

    console.log(a);//undefined

    var a = 10;

    根据变量的提升原则,var a会被优先提升到最前面编译,但赋值是在运行的时候完成的。实际上预编译的代码是:

    var a;

    console.log(a);

    a = 10

    3.函数提升

    函数和变量一样,在编译阶段会被提升到当前作用域最前面编译,且函数是一等公民,优先编译函数,如:

    console.log(a);//function a(){}

    var a = 10;

    function a(){}

    console.log(a);//10

    变量的声明虽然在函数声明之前,但是函数优先被编译,实际预编译的代码是:

    function a(){}

    console.log(a);

    a = 10

    console.log(a);

    函数提升只会提升函数声明,而不会提升函数表达式

    例:

    var foo = function () {

        console.log('foo1');

    }

    foo();  // foo1

    var foo = function () {

        console.log('foo2');

    }

    foo(); // foo2

    function foo() {

        console.log('foo1');

    }

    foo();  // foo2

    function foo() {

        console.log('foo2');

    }

    foo(); // foo2

    相关文章

      网友评论

          本文标题:Js中的变量提升和函数提升

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