1. 程式人生 > >js的arguments迪士尼彩樂園菠菜網站源碼開發到底是什麽?

js的arguments迪士尼彩樂園菠菜網站源碼開發到底是什麽?

read 先來 fun num 重點 ria 當我 一點 階乘

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) {

if(num<=1) {
return 1;
}else {
return num * arguments.callee(num-1);
}
}

這個方法雖然好用,但是有一點值得註意,ECMAScript4中為了限制js的靈活度,讓js變得嚴格,新增了嚴格模式,在嚴格模式中我們被禁止不使用var來直接聲明一個全局變量,當然這不是重點,重點是arguments.callee這個屬性也被禁止了。不過這都不是事兒,ES6為我們新增了很多好用的變量聲明方式和新的語法糖,作為一個時髦的前端,我們趕緊學習一些ES6的新語法吧。

js的arguments迪士尼彩樂園菠菜網站源碼開發到底是什麽?