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 相关文章推荐
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
Jan 09 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
JavaScript中原型和原型链详解
Feb 11 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
JS实现的不规则TAB选项卡效果代码
Sep 18 Javascript
详解自动生成博客目录案例
Dec 09 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
浅谈js的解析顺序 作用域 严格模式
Oct 23 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
微信小程序整个页面的自动适应布局的实现
Jul 12 Javascript
vue实现标签云效果的示例
Nov 09 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长网址与短网址的实现方法
2017/10/13 PHP
斜45度寻路实现函数
2009/08/20 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
2016/05/05 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
浅谈Vue数据响应
2018/11/05 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
原生js实现简单轮播图
2020/10/26 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
Python程序设计入门(3)数组的使用
2014/06/16 Python
python中global用法实例分析
2015/04/30 Python
Python 爬虫多线程详解及实例代码
2016/10/08 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python解析多帧dicom数据详解
2020/01/13 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
迟到检讨书800字
2014/01/13 职场文书
革命先烈的英雄事迹材料
2014/02/15 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
见习期个人总结
2015/03/05 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书