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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
Jquery插件 easyUI属性汇总
Jan 19 Javascript
基于jQuery替换table中的内容并显示进度条的代码
Aug 02 Javascript
基于mootools插件实现遮罩层新手引导
May 24 Javascript
js 程序执行与顺序实现详解
May 13 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
angular4 共享服务在多个组件中数据通信的示例
Mar 30 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
JS实现超级好看的鼠标小尾巴特效
Dec 01 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实现图象锐化代码
2007/06/14 PHP
怎样去阅读一份php源代码
2009/08/21 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
js倒计时显示实例
2016/12/11 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
python正则表达式match和search用法实例
2015/03/26 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
应届护士推荐信
2013/11/16 职场文书
商场总经理岗位职责
2014/02/03 职场文书
委托公证书范本
2014/04/03 职场文书
2014小学年度工作总结
2014/12/20 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
六年级作文之关于梦
2019/10/22 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript