美文网首页
变量提升与函数提升

变量提升与函数提升

作者: 莫劼 | 来源:发表于2018-08-27 21:51 被阅读0次

    注:变量提升,更通俗的说法是将“识别符”提升到它所作用域的最前面。

    比如:函数里面申明一个变量,var i=10;这个i就是标识符,浏览器在识别代码时,自动将函数内的变量提到最前面,但只是将var i 提到了作用域的最前面,并没有进行赋值。下面举两个例子说明下变量提升。


    1.全局变量的提升

    例:

         console.log(a); //undefined

         var a=10;  //var a 默认进行提升到第一行

    实际运行代码:

          var a;

         console.log(a);

         a = 10;


    2.局部变量的提升

    例:

        function fn()

    {

        console.log(a)

        var a=10;

    }

    实际代码:实际函数内部是将声明变量提到前面。

    function fn{

        var a;

        console.log(a);

        a=10;

    }


    函数提升

        在js中函数有两种声明方法,是函数声明式、函数字变量式。

        函数声明式:function fn(){}

        函数字变量式:var fn = function (){}

        在js中只有函数声明式才可以进行函数提升,函数字变量式不可以进行函数提升

        why:

                函数字变量式:

                                        console.log(fn())

                                        var fn = function(){document.write("#");}

                实际代码:在浏览器加载页面代码时,浏览器会将函数的标识符提到作用域的最前面。

                                        var fn;

                                        console.log(fn());    //undefined

                                        fn = function(){document.write("#");}

    函数声明式可以直接提升,跟变量提升一样,当使用浏览器时,浏览器会自动将函数提到作用域最前,function fn(){}可提升又可赋值。换言之:函数整体就会提到其作用域的最前端。

    相关文章

      网友评论

          本文标题:变量提升与函数提升

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