js的arguments迪士尼彩樂園菠菜網站源碼開發到底是什麽?
1.利用arguments實現方法的重載
下面我們利用arguments對象來實現一個參數相加的函數,不論傳入多少參數都行,將傳入的參數相加後返回。
function add() {
var len = arguments.length,
sum = 0;
for(;len--;){
sum += arguments[len];
}
return sum;
}
console.log( add(1,2,3) ); //6
console.log( add(1,3) ); //4
console.log( add(1,2,3,5,6,2,7) ); //26
js的arguments到底是什麽?迪士尼彩樂園菠菜網站源碼開發 dsluntan.com 點擊下載
由於js是一種弱類型的語言,沒有重載機制,當我們重寫函數時,會將原來的函數直接覆蓋,這裏我們能利用arguments,來判斷傳入的實參類型與數量進行不同的操作,然後返回不同的數值。
2.利用arguments.callee實現遞歸
先來看看之前我們是怎麽實現遞歸的,這是一個結算階乘的函數
function factorial(num) {
if(num<=1) {
return 1;
}else {
return num * factorial(num-1);
}
}
但是當這個函數變成了一個匿名函數時,我們就可以利用callee來遞歸這個函數。
function factorial(num) {
return 1;
}else {
return num * arguments.callee(num-1);
}
}
這個方法雖然好用,但是有一點值得註意,ECMAScript4中為了限制js的靈活度,讓js變得嚴格,新增了嚴格模式,在嚴格模式中我們被禁止不使用var來直接聲明一個全局變量,當然這不是重點,重點是arguments.callee這個屬性也被禁止了。不過這都不是事兒,ES6為我們新增了很多好用的變量聲明方式和新的語法糖,作為一個時髦的前端,我們趕緊學習一些ES6的新語法吧。
js的arguments迪士尼彩樂園菠菜網站源碼開發到底是什麽?