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

news/2024/9/29 1:23:52 标签: javascript, 前端, 开发语言

在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()
javascript">function example() {  
    var args = Array.prototype.slice.call(arguments);  
    // 现在 args 是一个真正的数组  
}

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

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

 

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

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

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

总结

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


http://www.niftyadmin.cn/n/5682192.html

相关文章

golang学习笔记32——哪些是用golang实现的热门框架和工具

推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…

【Vue】Vue2(1)

文章目录 1 初识Vue2 Vue模板语法3 数据绑定4 el与data的两种写法5 MVVM模型 1 初识Vue <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>初识Vue</title><!-- 引入Vue 全局多了一个构造函数Vue--><scrip…

“AI+Security”系列第3期(四):360安全大模型业务实践

近日&#xff0c;由安全极客、Wisemodel 社区、InForSec 网络安全研究国际学术论坛和海升集团联合主办的“AI Security”系列第 3 期技术沙龙&#xff1a;“AI 安全智能体&#xff0c;重塑安全团队工作范式”活动顺利举行。此次活动吸引了线上线下超过千名观众参与。 活动中&…

第十三周:机器学习

目录 摘要 Abstract 一、生成式对抗网络&#xff08;上&#xff09; 1、引入——generator 2、discriminator 3、GAN算法 4、GAN的理论 5、GAN的训练技巧 二、word2vec——gensim实践 1、引入 2、 word2vec模型 3、fasttext模型 总结 摘要 本周学习了对GAN进行了…

828华为云征文|华为云Flexus X实例:快速搭建FTP服务器,高效便捷!

目录 前言 一、Flexus云服务器X介绍 1.1 Flexus云服务器X实例简介 1.2 Flexus云服务器X实例特点 1.3 Flexus云服务器X实例场景需求 二、Flexus云服务器X购买 2.1 Flexus X实例购买 2.2 重置密码 2.3 登录服务器 三、Flexus X部署Ftp服务器 3.1 下载vsftpd 3.2 ftp用户密码设置 …

爬取元气手机壁纸简单案例(仅用于教学,禁止任何非法获利)

爬虫常用的库 爬虫&#xff08;Web Scraping&#xff09;是一种从网页上提取数据的技术。在 Python 中&#xff0c;有许多库可以帮助实现这一目标。以下是一些常用的爬虫库&#xff0c;以及对 BeautifulSoup 的详细介绍。 常用爬虫库 1.Requests ​ a.功能&#xff1a;用于发…

【C语言】使用 OpenSSL 进行 AES CBC 加密与解密

使用 OpenSSL 进行 AES CBC 加密与解密 在这篇文章中&#xff0c;我们将使用 OpenSSL 库实现 AES CBC 模式的加密和解密功能。AES&#xff08;高级加密标准&#xff09;是一种对称加密算法&#xff0c;广泛应用于数据保护。本示例展示了如何使用 PKCS#7 填充标准来处理明文的长…

使用 CMake 创建和调用动态库在 Windows 和 Ubuntu上的差异

使用 CMake 创建和调用动态库在 Windows 和 Ubuntu上的差异 确实&#xff0c;您指出的非常正确。在 Windows 平台上&#xff0c;当使用 CMake 配置和构建项目时&#xff0c;应当链接到 DLL 的导入库&#xff08;.lib 文件&#xff09;&#xff0c;而不是直接链接到 .dll 文件。…