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 相关文章推荐
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
js页面跳转常用的几种方式
Nov 25 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 Javascript
jquery获得keycode的示例代码
Dec 30 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
JavaScript中标识符提升问题
Jun 11 Javascript
jquery中取消和绑定hover事件的实现代码
Jun 02 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
基于JavaScript实现报警器提示音效果
Oct 27 Javascript
代码整洁之道(重构)
Oct 25 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 05 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
基于empty函数的判断详解
2013/06/17 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
python正则表达式之作业计算器
2016/03/18 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
基于python实现对文件进行切分行
2020/04/26 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
高三自我鉴定
2013/10/23 职场文书
开办饭店创业计划书
2013/12/28 职场文书
我未来的职业规划范文
2014/01/11 职场文书
法律进学校实施方案
2014/03/15 职场文书
搞笑的获奖感言
2014/08/16 职场文书
写给医院的感谢信
2015/01/22 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
高中班长竞选稿
2015/11/20 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python