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的文字向上跑动类似跑马灯的效果
Sep 22 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
浅析JavaScript函数的调用模式
Aug 10 Javascript
JS搜狐面试题分析
Dec 16 Javascript
JavaScript数组复制详解
Feb 02 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 Javascript
JQuery事件冒泡和默认行为代码实例
May 13 jQuery
Node.js API详解之 readline模块用法详解
May 22 Javascript
JavaScript实现复选框全选功能
Apr 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP 表单提交给自己
2008/07/24 PHP
php编程实现获取excel文档内容的代码实例
2011/06/28 PHP
php分页代码学习示例分享
2014/02/20 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
Python查找相似单词的方法
2015/03/05 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
pytorch的batch normalize使用详解
2020/01/15 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
2014年机关植树节活动方案
2014/02/27 职场文书
项目建议书范文
2014/05/12 职场文书
写给医生的感谢信
2015/01/22 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
学习党史心得体会2016
2016/01/23 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
使用python求解迷宫问题的三种实现方法
2022/03/17 Python