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 window.confirm确认 取消对话框实现代码小结
Oct 21 Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
Dec 29 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
Nov 19 Javascript
基于jQuery Tipso插件实现消息提示框特效
Mar 16 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
浅谈Vue的基本应用
Dec 27 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
May 03 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
Vue源码学习之初始化模块init.js解析
Nov 02 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
如何使用 vue-cli 创建模板项目
Nov 19 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php中防止SQL注入的最佳解决方法
2013/04/25 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
降低PHP Redis内存占用
2017/03/23 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python实现方便使用的级联进度信息实例
2015/05/05 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
给同事的道歉信
2014/01/11 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
法人代表任命书范本
2014/06/05 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python