Javascript中arguments对象详解


Posted in Javascript onOctober 22, 2014

在上篇文章中我们讨论了javascript中的默认参数,这篇文章,我们来讨论下javascript的arguments参数对象。

如下例的一个函数,我们如何根据传入参数的不同来做不同的处理呢?

function addAll () {

    // What do we do here?

}
// Should return 6

addAll(1, 2, 3);
// Should return 10

addAll(1, 2, 3, 4);

幸运的是,javascript有一个arguments对象,可以来处理上述情况。arguments对象是一个类数组对象,想了解arguments对象的详细情况请戳这里,我们使用arguments对象来改变上例:

function addAll () {

    var sum = 0;
    for (var i = 0; i < arguments.length; i++) {

        sum += arguments[i];

    }
    return sum;

}
// Returns 6

addAll(1, 2, 3);
// Returns 10

addAll(1, 2, 3, 4);

上面我们说过arguments对象是一个类数组对象,下面我们来测试下:

function getName() {

 console.log(Array.isArray(arguments));

}
//will output false

getName("benjamin");

上述测试结果可以看出:
它不是一个数组对象,那么它和数组对象有什么不同呢?详情请戳这里。

执行下面例子会抛出一个错误:

function sortArgs () {

    // Uncaught TypeError: undefined is not a function 

    sorted = arguments.sort()
    return sorted;

}

sortArgs();

我们可以像下面这样把一个类数组对象转换为数组对象:

function sortArgs () {

    // Convert arguments object into a real array

    var args = [].slice.call(arguments);
    // Now this will work!

    sorted = args.sort()
    return sorted;

}
//will output [1, 2, 3] 

console.log(sortArgs(1,3,2));

如果你感觉这篇文章对你有帮助,希望转给更多需要的人。文章不妥之处,欢迎留言斧正。

Javascript 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
AngularJs  Using $location详解及示例代码
Sep 02 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
js 转义字符及URI编码详解
Feb 28 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
基于JavaScript实现一个简单的Vue
Sep 26 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
Vue.directive 实现元素scroll逻辑复用
Nov 29 Javascript
javascript-hashchange事件和历史状态管理实例分析
Apr 18 Javascript
Javascript中的默认参数详解
Oct 22 #Javascript
js style动态设置table高度
Oct 21 #Javascript
js读写json文件实例代码
Oct 21 #Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 #Javascript
javascript Deferred和递归次数限制实例
Oct 21 #Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 #Javascript
jquery中post方法用法实例
Oct 21 #Javascript
You might like
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
php权重计算方法代码分享
2014/01/09 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
php通过各种函数判断0和空
2020/07/04 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
javascript Keycode对照表
2009/10/24 Javascript
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
利用Python如何生成hash值示例详解
2017/12/20 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
django删除表重建的实现方法
2019/08/28 Python
浅谈Python中的异常和JSON读写数据的实现
2020/02/27 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
详细的大学生创业计划书模板
2014/01/27 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技