JS中定義函數的兩種方式哪個優先級高·引出變量和函數聲明的運行順序

在JS中如果同時用變量和函數聲明相同名字的函數,誰會先執行呢?

 function foo() {
    alert(2);
 }

 var foo = function() {
     alert(1);
 }

foo();

執行一下會發現alert彈出1,爲什麼是這樣的呢?下面解釋下原因。

因爲在代碼解析運行期間,變量的聲明被提到當前作用域的最頂端,其次是函數的聲明,所以就變成了:

var foo;

 function foo() {
    alert(2);
 }

foo = function() {
     alert(1);
 }

這樣後面的聲明就把前面的聲明覆蓋了,所以調用foo()時執行了後面的函數內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章