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 相关文章推荐
jQuery asp.net 用json格式返回自定义对象
Apr 07 Javascript
jquery操作 iframe的方法
Dec 03 Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
JS document对象简单用法完整示例
Jan 14 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 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
调频问题解答
2021/03/01 无线电
PHP新手上路(二)
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
培养自己的php编码规范
2015/09/28 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
JavaScript如何操作css
2020/10/24 Javascript
Python下载网络小说实例代码
2018/02/03 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Python中如何导入类示例详解
2019/04/17 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
详解Python3定时器任务代码
2019/09/23 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
python操作yaml说明
2020/04/08 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
java字符串格式化输出实例讲解
2021/01/06 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
前处理班长职位说明书
2014/03/01 职场文书
个人股份合作协议书
2014/10/24 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
实习生个人总结范文
2015/02/28 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python