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

变量提升与函数提升

作者: 莫劼 | 来源:发表于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(){}可提升又可赋值。换言之:函数整体就会提到其作用域的最前端。

相关文章

  • 关于变量提升

    函数提升的优先级要高于变量提升,变量提升到函数声明的后面; 变量提升,但是赋值不提升,函数表达式不提升;

  • JS中的提升

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

  • let const var

    变量提升 函数会优先于变量提升; 函数提升会把整个函数移到作用域顶部 变量提升智慧把变量的定义移到作用域顶部 wi...

  • 变量提升与函数提升

    注:变量提升,更通俗的说法是将“识别符”提升到它所作用域的最前面。 比如:函数里面申明一个变量,var i=10;...

  • 变量提升与函数提升

    变量声明提升通过var定义(声明)的变量,在定义语句之前就可以访问的值:undefined 函数声明提升通过fun...

  • 变量提升与函数提升

    变量提升与函数提升 我们知道 这个时候运行a() 输出 jirengu ;而 这个时候a()输入结果却为undef...

  • 函数提升与变量提升

    以下内容不一定对,仅个人理解 众所周知,类似var a = 1;这种可分为两步,第一步编译为var a;提升至自身...

  • js3-函数变量提升 顶层函数 数据类型转换 Math对象 js

    函数变量的提升 函数内部变量提升: 函数内部使用变量, 默认情况下, 函数会把下面变量它的声明提升到函数的最上边 ...

  • Javascript 变量执行过程 和 数组 & 对象的区别

    变量提升 JS执行过程1. 先提升(先提升函数,再提升变量,如果名字一样,变量提升会覆盖函数提升)2. 再执行,如...

  • 闭包

    提升 1 变量提升 2 函数表达式 函数表达式的提升 === 变量提升 3 函数声明 demo 执行环境&词法作用...

网友评论

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

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