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 学习小结(适合新手参考)
Jul 30 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
基于Cookie常用操作以及属性介绍
Sep 07 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
Oct 17 Javascript
Vue-Router模式和钩子的用法
Feb 28 Javascript
解决VUE中document.body.scrollTop为0的问题
Sep 15 Javascript
Vue实现搜索结果高亮显示关键字
May 28 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
Sep 06 Javascript
微信小程序实现吸顶效果
Jan 08 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
FCK调用方法..
2006/12/21 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
JavaScript中object和Object的区别(详解)
2017/02/27 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
基础的十进制按位运算总结与在Python中的计算示例
2016/06/28 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python远程linux执行命令实现
2020/11/11 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
JAVA代码查错题
2014/10/10 面试题
医院护士的求职信范文
2013/12/26 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
创业计划书之网吧
2019/10/10 职场文书
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android