Objek arguments ECMAScript
- 上一页 函数概述
- 下一页 Function 对象
Objek arguments
Dalam kod fungsi, pengembang menggunakan objek khusus arguments,Tiada perlu menyatakan nama parameter secara jelasdapat mengakses mereka.
Contohnya, dalam fungsi sayHi(), parameter pertama adalah message. Pemboleh ubah nilai ini dapat dicapai melalui arguments[0], iaitu nilai parameter pertama (parameter pertama berada di posisi 0, parameter kedua berada di posisi 1, dan seterusnya).
Oleh itu, tiada perlu menamakan parameter secara jelas untuk menulis semula fungsi:
function sayHi() { if (arguments[0] == "bye") { return; } alert(arguments[0]); }
检测参数个数
还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
下面的代码将输出每次调用函数使用的参数个数:
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);
上面这段代码将依次显示 "2"、"0" 和 "1"。
注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。
模拟函数重载
用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:
function doAdd() { if(arguments.length == 1) { alert(arguments[0] + 5); } else if(arguments.length == 2) { alert(arguments[0] + arguments[1]); } } doAdd(10); //输出 "15" doAdd(40, 20); //输出 "60"
当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。
虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。
- 上一页 函数概述
- 下一页 Function 对象