首頁  >  問答  >  主體

同名變量和函數的問題

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

phpcn_u3114phpcn_u31142700 天前935

全部回覆(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
  • 取消回覆