函数内部的 arguments 变量特性,属性,如何将他转换为数组

news2024/9/28 19:23:11

在JavaScript中,arguments 对象是一个类数组对象,它包含了传递给函数的所有参数。这个对象不是真正的数组,但它有一些与数组相似的特性。下面将介绍 arguments 对象的特性、属性以及如何将其转换为数组。

arguments 对象的特性

  1. 类数组对象arguments 看起来像数组,有数字索引和 length 属性,但没有数组的方法(如 push()pop()slice() 等)。
  2. 自动更新:如果函数内部修改了参数的值,arguments 对象中对应的值也会更新。同样,如果修改了 arguments 对象中某个索引的值,对应的参数值也会更新。
  3. 与命名参数共存:即使函数定义了命名参数,arguments 对象也会包含所有传递给函数的参数,无论是否有命名参数对应。
  4. 不支持箭头函数:在箭头函数中,arguments 对象是不可用的,因为它们不绑定自己的 arguments 对象。

arguments 对象的属性

  • length:表示传递给函数的参数个数。
  • 索引属性(0, 1, 2, ...):通过数字索引访问传递给函数的参数值。

将 arguments 转换为数组

由于 arguments 不是一个真正的数组,但它有与数组相似的索引和 length 属性,我们可以使用几种方法将其转换为数组。

1. 使用 Array.prototype.slice.call()
function example() {  
    var args = Array.prototype.slice.call(arguments);  
    // 现在 args 是一个真正的数组  
}

或者使用 Function.prototype.apply 方法,但这种方式稍显复杂且不如直接使用 call 方法直观。

2. 使用扩展运算符(ES6+)
function example() {  
    var args = [...arguments];  
    // 现在 args 是一个真正的数组  
}

 

扩展运算符(...)提供了一种非常方便的方式来将类数组对象或可迭代对象转换为数组。

3. 使用 Array.from()(ES6+)
function example() {  
    var args = Array.from(arguments);  
    // 现在 args 是一个真正的数组  
}

Array.from() 方法可以从一个类似数组或可迭代的对象中创建一个新的,浅拷贝的数组实例。

总结

arguments 对象在JavaScript中提供了对函数参数的访问,但它本身不是数组。通过 Array.prototype.slice.call()、扩展运算符(...)或 Array.from() 方法,我们可以很容易地将 arguments 对象转换为真正的数组,从而利用数组提供的方法来处理这些参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2174528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的前序遍历,中序遍历,后序遍历以及层次遍历(递归方式+C语言代码)

#include<stdlib.h> #include<stdio.h> #include<assert.h> //定义一个二叉树结点结构体 typedef int ElemTpye; typedef struct TreeNode {ElemTpye data;struct TreeNode* left;struct TreeNode* right; }TreeNode; //创建结点 TreeNode* createTreenode(E…

【qt】QQ仿真项目1

一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…

Spring Gateway学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程&#xff1a;封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

C++20中头文件concepts的使用

<concepts>是C20中新增加的头文件&#xff0c;此头文件是concepts库的一部分&#xff0c;主要用于模板编程、泛型编程。包括 1.core language concepts&#xff1a; std::same_as&#xff1a;指定一种类型(type)与另一种类型是否相同。 std::derived_from&#xff1a;指定…

学习之什么是装饰器

什么是装饰器 本质&#xff1a;就是一个函数&#xff0c;能为其它的函数增加额外功能 # 目标函数 def power_num(n):"""计算并返回1-n之间每个数的平方和:param n::return:"""total 0for i in range(1, n1):total i ** 2"""…

【网络安全】-访问控制-burp(1~6)

文章目录 前言   1.Lab: Unprotected admin functionality  2.Lab: Unprotected admin functionality with unpredictable URL   3.Lab: User role controlled by request parameter   4.Lab:User role can be modified in user profile  5.Lab: User ID controlled by…

爬虫入门 Selenium使用

爬虫入门 & Selenium使用 特别声明&#x1f4e2;&#xff1a;本教程只用于教学&#xff0c;大家在使用爬虫过程中需要遵守相关法律法规&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01; 项目代码&#xff1a;https://github.com/ziyifast/ziyifast-code_inst…

systemd-analyze命令:Linux系统启动分析

一、命令简介 用途: systemd-analyze ​命令用于分析系统引导过程的时间性能。标签: 系统管理&#xff0c;性能分析。相关命令: systemd-bootchart​, systemd-cgtop​, systemd-resolve​. ‍ 二、命令参数 命令格式 systemd-analyze [OPTIONS...] COMMAND ...选项和参数…

GUI-Guider LVGL 添加自定义代码

添加自定义代码时&#xff0c;分为上线两端 1.上部分可有可无 2.下部分为你触发事件时调用的语句 具体集合下方图片 示例参考

运放模块的选型参数

增益带宽积-----尤其重要&#xff1a; GWB 增益*带宽 压摆率&#xff1a; 高带宽的运放一般都是电流型运放&#xff1a; 注意压摆率计算公式里面的Vopp参数是放大后的电压最大值&#xff1a; 参数&#xff0c;布局一定参考数据手册&#xff01;&#xff01;&#xff01;&…

Python编码系列—Python备忘录模式:掌握对象状态保存与恢复技术

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

快速理解使用mq(二)——用户、虚拟HOST、Queue的创建

一、用户的创建 直接添加即可 二、虚拟Host创建 创建完成选择所属用户 点进去新建的host 管理对应权限 三、queue 创建 选择对应host 直接添加即可

系统分析师14:需求工程

1 内容概要 2 需求工程概述 需求工程&#xff1a;需求开发【含需求分析】和需求管理系统分析&#xff1a;软件需求分析、硬件需求分析、网络需求分析软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望考虑“做什么”&#xff0c;而不考虑“怎么做”&#xff0c…

2025 年 IT 前景:机遇与挑战并存,人工智能和云计算成重点

云计算de小白 投资人工智能&#xff1a;平衡潜力与实用性 到 2025 年&#xff0c;人工智能将成为 IT 支出的重要驱动力&#xff0c;尤其是在生成式人工智能领域。人工智能的前景在于它有可能彻底改变业务流程、增强决策能力并开辟新的收入来源。然而&#xff0c;现实情况更加微…

4款工具搞定PDF去水印,线上+软件一应俱全!

作为一名文员&#xff0c;我每天都得和各种文档打交道&#xff0c;其中PDF文件是最常见的。有时候&#xff0c;我们收到的PDF文件会带有水印&#xff0c;这不仅影响了阅读体验&#xff0c;还可能在分享时造成不便。所以&#xff0c;学会如何去除PDF水印对我来说至关重要。今天&…

力扣 滑动窗口最大值

滑动窗口最大值 题目描述 题目分析 维护一个定长窗口的最大值&#xff0c;每当窗口滑动时都有一个新的元素进入和一个原有的元素离开。 比较简单的方法就是用一个优先队列维护窗口最大值 但是堆的计算成本时最坏时是 O ( n log ⁡ n ) O(n\log n) O(nlogn) 优化&#xff1a;…

uni-app在线预览pdf

这里推荐下载pdf.js 插件 PDF.js - Browse Files at SourceForge.net 特此注意 如果报 Promise.withResolvers is not a function 请去查看版本兼容问题 降低pdf.js版本提高node版本 下载完成后 在 static 文件夹下新建 pdf 文件夹&#xff0c;将解压文件放进 pdf 文件…

面试加分必看,11道接口安全测试面试题!

今天&#xff0c;分享一些在面试中可能会遇到的接口安全测试面试问题&#xff0c;助你在面试中从容不迫。 01.HTTPS 与 HTTP 的区别&#xff1f; 02.OSI七层模型是指&#xff1f; 03.你所知道的 HTTP 状态码&#xff1f; 04.你知道SQL注入吗&#xff1f; 05.SQL 注入与XSS…

Xiaojie雷达之路---doa估计(dbf、capon、music算法)

Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下雷达信号处理中的dbf、capon、music测角算法,一起来看看吧!!! 前言 本文从信号模型、dbf原理、capon原理、music原理以及代码仿真进行展开描述。 信号模型 阵列接收到…

c++与Python用笛卡尔的心形函数输出爱心

我突然想到输出爱心是否可以用笛卡尔的心形函数 在IDLE里用Python输出下面这个图形 在小熊猫c里用c输出下面这个图形 如果当你要输出这些的时候会怎么办 低级:纯输出 print( ********* ********* ***************** ***************** …