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 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
JavaScript中对象属性的添加和删除示例
May 12 Javascript
在Node.js中实现文件复制的方法和实例
Jun 05 Javascript
在Ubuntu系统上安装Node.JS的教程
Oct 15 Javascript
基于jquery实现智能表单验证操作
May 09 Javascript
js中window.open的参数及注意注意事项
Jul 06 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
AngularJS自定义服务与fliter的混合使用
Nov 24 Javascript
浅谈angular4实际项目搭建总结
Dec 01 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 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 定界符格式引起的错误
2011/05/24 PHP
PHP生成随机密码类分享
2014/06/25 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python检查ping终端的方法
2019/01/26 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
《听鱼说话》教学反思
2014/02/15 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
安装工程师岗位职责
2015/02/13 职场文书
安全承诺书格式范本
2015/04/28 职场文书
学困生转化工作总结
2015/08/13 职场文书
详解nginx进程锁的实现
2021/06/14 Servers
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server