JS中arguments對(duì)象
與其他程序設(shè)計(jì)語(yǔ)言不同,ECMAScript 不會(huì)驗(yàn)證傳遞給函數(shù)的參數(shù)個(gè)數(shù)是否等于函數(shù)定義的參數(shù)個(gè)數(shù)。
開(kāi)發(fā)者定義的函數(shù)都可以接受任意個(gè)數(shù)的參數(shù)而無(wú)需跟定義的函數(shù)相匹配(根據(jù) Netscape 的文檔,最多可接受 255 個(gè)),而不會(huì)引發(fā)任何錯(cuò)誤。任何遺漏的參數(shù)都會(huì)以 undefined 傳遞給函數(shù),多余的參數(shù)函數(shù)都將會(huì)忽略掉。
arguments 對(duì)象
arguments對(duì)象和Function是分不開(kāi)的。因?yàn)閍rguments這個(gè)對(duì)象不能顯式創(chuàng)建,arguments對(duì)象只有函數(shù)開(kāi)始時(shí)才可用。
無(wú)需指出參數(shù)名,就能訪問(wèn)參數(shù):arguments不是數(shù)組,而是一個(gè)類似數(shù)組的對(duì)象,但是它訪問(wèn)單個(gè)參數(shù)的方式與訪問(wèn)數(shù)組元素的方式相同:arguments[0]、arguments[n]
function sayHi(){ console.log(arguments[0]); } sayHi("aaa","bbb"); //aaa
arguments.length 得到參數(shù)的個(gè)數(shù)
function howManyArgs() { console.log(arguments.length); } howManyArgs("string", 45); //2 howManyArgs(); //0 howManyArgs(12); //1
callee屬性:返回正被執(zhí)行的 Function 對(duì)象,也就是所指定的 Function 對(duì)象的正文。callee 屬性是 arguments 對(duì)象的一個(gè)成員,僅當(dāng)相關(guān)函數(shù)正在執(zhí)行時(shí)才可用,大多用來(lái)針對(duì)同個(gè)方法多處調(diào)用并且傳遞參數(shù)個(gè)數(shù)不一樣時(shí)進(jìn)行使用
var sum = function (n) { if (1 == n) { return 1; } else { return n + arguments.callee(n - 1); } } console.log(sum(6));

浙公網(wǎng)安備 33010602011771號(hào)