【js】函數問題

來源:互聯網
上載者:User

標籤:判斷   logs   數組   沒有   個數   blog   img   alt   log   

一.函數重載問題:

由於js的函數傳入的參數當做arguments對象(和數組類似,但不是Array的執行個體),傳入的參數類型和數量沒有限制,沒有函數簽名,所以如果要實現重載功能 的話,只能是不夠完美得實現:

function doAdd(num1,num2){

if(arguments.length==1){

console.log(num1+10);

}

else if (arguments.length==2){

console.log(num1+num2);

}

}

這裡可以通過傳入的參數個數來判斷對應實現的功能,如果要判斷參數類型的話需要用到typeOf等其他判斷類型的方法,還是可以實現重載的,只是需要加上判斷參數的數量和類型比較麻煩。

而重載的好處:

所謂重載就是在一個類中可以定義多個相同的方法,但是方法的參數類型和參數的個數以及順序要不同。重載的好處就是能夠讓我們很快的掌握該方法的功能,我們只要記住該方法就能很快的理解該方法的參數以及參數的作用,靈活運用。

二.傳入參數

function sum(sum1,sum2){

console.log(arguments.length);

arguments[1]=10;

console.log("sum1 : "+ sum1);

console.log("sum2 : "+ sum2);

}

如果一開始只給sum1值,則sum2永遠是undefined,而不是10:

sum(10);

 

如果給了sum1和sum2值或者傳多其他的參數,則sum2可以被修改為10:

sum(10,20);

 

這是因為一開始傳入的參數的數量確定了arguments對象的長度,而一開始沒有給值的參數就沒有在arguments存起來,這時候這些返回undefined的參數變數是沒有被儲存的。

 

【js】函數問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.