登录

同名變量和函數的問題

具體看我截的圖QQ截图20170620174114.jpg

# JavaScript
phpcn_u3114 phpcn_u3114 2283 天前 708 次浏览

全部回复(2) 我要回复

  • PHP中文网

    PHP中文网2017-06-21 09:38:13

    <script>
    var bar=function(){
       var foo=function(){}
       foo=10;
    }
    var foo=1;
    bar();
    alert(foo);
    </script>

    js申明部分被顶置,函数内部的foo是局部变量,不影响全局的foo。

    回复
    0
  • phpcn_u3114

    谢谢你的回答,弄清楚了

    phpcn_u3114 · 2017-06-21 22:38:15
    phpcn_u3114

    谢谢你的回答,弄清楚了

    phpcn_u3114 · 2017-06-21 22:38:16
  • ringa_lee

    ringa_lee2017-06-21 09:37:34

    1函数声明会置顶

    2变量声明也会置顶
    3函数声明比变量声明更置顶:)
    4变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
    5声明过的变量不会重复声明

    以上这几点你作个参考,就明白原因了!

    你的代码实际上运行的效果是:

    function bar(){
     function foo(){}
      var foo;//实际上无效
      foo=10;
    }
    var foo;
    bar();
    foo=1;
    console.log(foo);


    回复
    0
  • phpcn_u3114

    谢谢你帮我解惑,弄清楚了

    phpcn_u3114 · 2017-06-21 22:39:29
  • 取消 回复 发送