当前位置:首页 > 编程技术 > 正文内容

JS 函数中的 arguments 类数组对象

yc8881年前 (2022-12-03)编程技术349
  • 1. arguments 介绍

  • 2. arguments 转为数组

  • 3. 箭头函数中没有 arguments

    1. arguments 介绍


    众所周知,js 是一门非常灵活的语言。当我们在 js 中调用一个函数时,经常会给函数传递一些参数,js 把调用函数时传入的全部实参存储到一个叫做 arguments 的类数组对象里面

    arguments 是一个类数组对象,不是一个真正的数组。它类似数组,除了 length 属性和通过索引获取元素之外没有任何数组属性。这一点可以通过打印它看到

    function test() {    console.dir(arguments);}test('html', 'css', 'js')console.dir(['html', 'css', 'js'])

    通过打印结果可以发现,arguments 的原型是 Object,而数组的原型是 Array

    那么关于 arguments 是什么 ? 这里做下总结

    arguments 是类数组对象(伪数组),即不是一个真正的数组,而是一个对象。它有 length 属性,并且可以通过下标获取元素,但是它不能调用数组方法,就是因为它不是真正的数组,这一点可以通过查看它的原型验证

    2. arguments 转为数组


    arguments 是类数组对象,不是一个真正的数组,意味着不能使用数组方法,但是可以将它转换为真正的数组

    方法一: 直接遍历(新手写法)

    const args = [];for (let i = 0; i < arguments.length; i++) {    args.push(arguments[i])}

    方法二: Array.prototype.slice(下面两种方式都可以)

    const args = Array.prototype.slice.call(arguments)const args = [].slice.call(arguments)

    方法三: ES6 语法(下面两种方式都可以)

    const args = [...arguments]const args = Array.from(arguments)

    3. 箭头函数中没有 arguments


    arguments 只存在于普通函数中,而在箭头函数中是不存在的

    下面代码抛出错误异常:Uncaught ReferenceError: arguments is not defined

    const arrow = () => {    console.log(arguments);}arrow('html', 'css', 'js')

    箭头函数中虽然没有 arguments,但是可以使用 ... 接收所有实参

    const arrow = (...args) => {    console.log(args);}arrow('html', 'css', 'js')


    本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


    从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


    本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


    本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


    若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


    本文链接:https://www.10zhan.com/biancheng/10164.html

    标签: js
    分享给朋友:

    “JS 函数中的 arguments 类数组对象” 的相关文章

    【说站】laravel实现自定义404页面并给页面传值

    【说站】laravel实现自定义404页面并给页面传值

    以 laravel5.8 为例,虽然有自带的404页面,但太简单,我们更希望能自定义404页面,将用户留在站点。实现的方式很简单,将自定义的视图文件命名为 404.blade.php,并放到 reso...

    【说站】Thymeleaf报错Error resolving template “XXX”

    【说站】Thymeleaf报错Error resolving template “XXX”

    修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

    【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

    【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

    这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

    【说站】利用Webhook实现Java项目自动化部署

    【说站】利用Webhook实现Java项目自动化部署

    用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

    【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

    【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

    PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

    【说站】linux中redis如何以redis用户重启?

    【说站】linux中redis如何以redis用户重启?

    通过上图我们可以看到,目前状态是已经以 redis 用户启动着,我想修改下 redis 的密码,然后怎么以 redis 用户重启呢?redis 是 nologin 用户,不能通过 su redis 切...