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 相关文章推荐
JavaScript初学者应注意的七个细节详细介绍
Dec 27 Javascript
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
Mvc提交表单的四种方法全程详解
Aug 10 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
Dec 08 Javascript
总结几道关于Node.js的面试问题
Jan 11 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
Apr 18 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
Aug 22 Javascript
浅谈JavaScript闭包
Apr 09 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
Sep 06 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
投票管理程序
2006/10/09 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
迁移PHP版本到PHP7
2015/02/06 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
sina的lightbox效果。
2007/01/09 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
jQuery获取样式中颜色值的方法
2015/01/29 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
python中Lambda表达式详解
2019/11/20 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
竞选大队干部演讲稿
2014/09/11 职场文书
单位接收函格式
2015/01/30 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL