前端 - Javascript中,函数的arguments为什么要设计成Array-like?
怪我咯
怪我咯 2017-04-10 12:47:32
[JavaScript讨论组]

我们都知道arguments是一个类数组的对象,那为什么要这么设计呢?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
天蓬老师

我猜是因为不希望大家对arguments做slice、push等等操作。 毕竟,这东西应该是只读的。

PHP中文网

《javascript语言精粹》中是这么解释的:这(arguments类数组只有length一个方法)是一个设计上的错误——这不是一个令人信服的解释,仅供参考。

怪我咯

我觉得应该是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变成空过后也不会影响代码执行。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号