1. 類數(shù)組對(duì)象:arguments
function showargs() {
console.log( arguments );
}
showargs(1,2,3,4,5);
打印結(jié)果
可以明顯看出他不只輸出了傳遞的數(shù)組筋粗,而且還有很多對(duì)象屬性淆游,有了這個(gè)對(duì)象我們以后寫函數(shù)的時(shí)候嫉父,就不用給所有的形參指定參數(shù)名壶冒,然后通過參數(shù)名的方式獲取參數(shù)了,我們可以直接使用arguments對(duì)象來獲取實(shí)參。
有些語言在我們給函數(shù)指定了參數(shù)名之后腌歉,當(dāng)調(diào)用函數(shù)時(shí)蛙酪,會(huì)判斷當(dāng)前傳入的參數(shù)是否與函數(shù)定義的參數(shù)個(gè)數(shù)相等,不相等就會(huì)報(bào)錯(cuò)翘盖,但是靈活的js并不會(huì)驗(yàn)證傳遞給函數(shù)的參數(shù)個(gè)數(shù)是否等于函數(shù)定義的參數(shù)個(gè)數(shù)桂塞。所以為了代碼的簡潔度,我們使用arguments調(diào)用參數(shù)可以不混淆不同函數(shù)之間的參數(shù)名馍驯。另外為了代碼的嚴(yán)整度阁危,我們也能用arguments來判斷當(dāng)前傳入?yún)?shù)的個(gè)數(shù)是否與我們需要的數(shù)量一致。
示例代碼
最后我們還可以看到arguments還有一個(gè)叫做callee的屬性汰瘫,這個(gè)屬性是表示的是當(dāng)前函數(shù)的一個(gè)引用狂打,簡單點(diǎn)說,這個(gè)屬性里面存儲(chǔ)的我們調(diào)用的這個(gè)函數(shù)的代碼混弥。
示例代碼
arguments的一些用法
實(shí)現(xiàn)方法的重載
add
階乘遞歸
注意:ECMAScript4中為了限制js的靈活度趴乡,讓js變得嚴(yán)格,新增了嚴(yán)格模式蝗拿,所以arguments.callee這個(gè)屬性在use strict模式下被禁止了晾捏。