2016-12-31 33 views
0

在我開始寫這篇文章之前,我已經嘗試了下面的代碼;在JS中,是否允許使用不同數量的參數(如Java)聲明相同的函數名稱?

function foo(a){ 
    alert(a);} 

function foo(a, b){ 
    alert(a + ' ' + b);} 

而且在加載頁面時調用的函數,我叫了兩個函數,因爲這:foo(1); foo(1, 2);然後我首先得到了「1未定義」,然後選擇「1 2」。

我期望的第一件事就是我可以用不同的參數來聲明相同的函數名稱,例如Java;但我不確定我可以。至少我確定聲明function foo(a, b){...}function foo(b, c){...}是被禁止的。

回答

4

JavaScript不支持函數重載

你可以像這樣模擬功能的JavaScript

function mother_foo(a, b) { 
    if (arguments.length == 1) { 
    foo(a) 
    } else if (arguments.length == 2) { 
    foo(a,b) 
    } 
} 
0

超載不允許使用兩條功能的this.Because將是window對象的屬性。

當瀏覽器讀取function foo(a){}時,foo將添加到窗口Object.You可以運行console.log(window.log)來查看結果。

Whe brower讀取function foo(b, c),provious將被覆蓋,您可以運行console.log(window.log)來查看當前結果。

相關問題