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 解疑
Nov 11 Javascript
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
js 判断一个元素是否在页面中存在
Dec 27 Javascript
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
js实现新年倒计时效果
Dec 10 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
微信小程序 sha1 实现密码加密实例详解
Jul 06 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 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
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
php实现插入排序
2015/03/29 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
javascript读取xml
2006/11/04 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
js实现复制功能(多种方法集合)
2018/01/06 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
python中随机函数random用法实例
2015/04/30 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python常用的爬虫技巧总结
2016/03/28 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python数据持久化shelve模块用法分析
2018/06/29 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
Keras自定义IOU方式
2020/06/10 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
python Zmail模块简介与使用示例
2020/12/19 Python
CSS3 二级导航菜单的制作的示例
2018/04/02 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
分居协议书范本
2014/11/03 职场文书
企业培训简报范文
2015/07/20 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
python opencv通过4坐标剪裁图片
2021/06/05 Python