Heim > Fragen und Antworten > Hauptteil
我们都知道arguments是一个类数组的对象,那为什么要这么设计呢?
PHP中文网2017-04-10 12:49:32
《javascript语言精粹》中是这么解释的:这(arguments类数组只有length一个方法)是一个设计上的错误——这不是一个令人信服的解释,仅供参考。
怪我咯2017-04-10 12:49:32
我觉得应该是arguments和array在有些方面的区别。比如说argument可以接到所有实参。又比如说argument可以用callee方法来解耦,
function factorial(num) {
if(num<=1) return 1;
//此时和函数名耦合在一起
// else return num*factorial(num-1);
//以下就实现了函数名的解耦合,在js中通常都是使用这种方式做递归
else return num*arguments.callee(num-1);
}
alert(cf(5));
factorial = null;
alert(cf(5));
即便你把factorial变成空过后也不会影响代码执行。