今天发现Flash CS3帮助手册上的一个值得注意的问题(刚开始还以为是错误)!在讲述 arguments 对象时,官方的帮助手册上是这样介绍的:
----------------------------------------------------
在 ActionScript 3.0 中,函数调用中所包括的参数的数量可以大于在函数定义中所指定的参数数量,但是,如果参数的数量小于必需参数的数量,在严格模式下将生成编译器错误。您可以使用 arguments
对象的数组样式来访问传递给函数的任何参数,而无需考虑是否在函数定义中定义了该参数。下面的示例使用 arguments
数组及 arguments.length
属性来输出传递给 traceArgArray()
函数的所有参数:
function traceArgArray(x:int):void {
for (var i:uint = 0; i < arguments.length; i++) {
trace(arguments[i]);
}
}
traceArgArray(1, 2, 3);
// 输出:
// 1
// 2
// 3
----------------------------------------------------
红色部分说得很明确,而且例子也提供了。但,无论在 Flash CS3 里面测试还是在 Flex Builder 里测试,都会出现这样的错误:1137: 参数个数不正确。不应超过 1 个。刚开始时,还以为这是帮助手册里的一个严重错误。但,后来发现,在严格模式下这种情况是不允许的。严格模式要求所传递的参数数量与所定义的参数数量完全相同。所以,这种情况只在标准模式下编译成功。