JavaScript的提升

 知识点:不影响编程,js的原理,了解,解释,之前解释不了的bug


    变量声明提升:所有通过var声明的变量,都会将声明的过程提升到当前作用域的开始位置,在原来赋值的位置赋值

    console.log(a);

    var a = 10;

    console.log(a);

    console.log(a);      //报错

    function fn(){

        console.log(a);     //undefined

        var a = 10;

    }

    fn()

    函数声明提升:既提前声明有提前赋值,整体提升到当前作用域开始的位置

    fn();

    function fn(){

        console.log("hello");

    }


    赋值式创建函数:提升的是变量的声明,函数并没有提升

    console.log(fn)

    var fn = function(){

        console.log("hello");

    }

    当变量名和函数名重复了:变量名提升的更高,后生效的是函数

                          生效的是函数

    console.log(a);     //函数

    function a(){

        console.log("hello");

    }

    var a = 10;

    console.log(a);     //10

function fn(){

        console.log(a);     //f2

        var a = "hello";

        function a(){1};

        console.log(a);     //"hello"

        a = "world";

        function a(){2}

        console.log(a)      //"world"

    }

    fn();

    // ↑↑↑等价于↓↓↓

    function fn(){

        var a;

        function a(){1};

        function a(){2};

        console.log(a);     //f2

        a = "hello";

        console.log(a);     //"hello"

        a = "world";

        console.log(a)      //"world"

    }

    fn();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容