首页/文章/八股文

JavaScript函数参数arguments的用法

2025-03-17
858 字约 3 分钟
...

JavaScript是一门强大的编程语言,它支持函数传递参数,参数的个数是不确定的。函数参数可以通过JavaScript内置的arguments对象访问。arguments对象是一个伪数组对象,它包含传递给函数的所有参数,可以通过索引值访问每个参数。

JavaScript函数参数arguments的用法

1.访问函数参数

我们可以通过arguments对象访问传递给函数的所有参数,如下所示:

function add(a, b) {

console.log(arguments[0], arguments[1]);

return a + b;

}

add(2, 3);

在上面的add函数中,我们可以通过arguments[0]和arguments[1]访问函数的参数a和b。这是因为arguments对象中的参数是按照索引值顺序排列的,第一个参数的索引值为0,第二个参数的索引值为1,以此类推。

2.使用arguments对象遍历函数参数

我们可以使用for循环遍历arguments对象中的所有参数,如下所示:

function sum() {

var total = 0;

for (var i = 0; i < arguments.length; i++) {

total += arguments[i];

}

return total;

}

console.log(sum(1, 2, 3, 4, 5));

在上面的sum函数中,我们遍历了arguments对象中的所有参数,并将它们相加得到了总和。这种方法非常有用,因为函数可以接受任意数量的参数。

3.使用arguments对象模拟函数重载

JavaScript不支持函数重载,但我们可以使用arguments对象模拟函数重载。我们可以编写一个具有多个if语句的函数,根据传递给函数的参数的数量和类型来执行不同的操作,如下所示:

function add() {
    if (arguments.length === 2 && typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {
        return arguments[0] + arguments[1];
    } else if (arguments.length === 3 && typeof arguments[0] === 'number' && typeof arguments[1] === 'number' && typeof arguments[2] === 'number') {
        return arguments[0] + arguments[1] + arguments[2];
    } else {
        throw new Error('Invalid arguments');
    }
}

console.log(add(2, 3));

console.log(add(2, 3, 4));

console.log(add(2, '3'));

在上面的add函数中,我们根据传递给函数的参数的数量和类型来执行不同的操作。如果传递的是两个数字,我们将它们相加并返回结果。如果传递的是三个数字,我们将它们相加并返回结果。如果参数的数量或类型不正确,则抛出错误。

4.使用扩展运算符和剩余参数

ES6引入了扩展运算符和剩余参数,它们使得JavaScript函数参数的操作更加方便。我们可以使用扩展运算符将一个数组中的元素展开,并将它们传递给函数。我们可以使用剩余参数来接受任意数量的参数,并将它们存储在一个数组中。如下所示:

function sum(...nums) {

return nums.reduce((a, b) => a + b);

}

console.log(sum(1, 2, 3, 4, 5));

在上面的sum函数中,我们使用剩余参数来接受任意数量的参数,并将它们存储在一个数组中。我们使用数组的reduce方法来计算数组中所有元素的总和。

如果您觉得这篇文章有帮助,请点个赞吧~

分享文章

相关文章

更多文章 →
八股文2026-08-20
Embedding 向量模型:从语义表示到相似度计算
前言 大模型「读懂」文字靠的是 token,但 token 之间只有离散的编号关系,模型并不知道「苹果」和「李子」在语义上很近。要让程序能「理解」两段文字的相似程度,必须先把文本映射成一个 高维向量 ,再用几何方法比较。这一步就是 Embedding。 本篇基于我本地 今天的真实代码,从语义表示讲到余弦相似度,并复盘几个踩过的真实坑。 一、为什么需要 Embedding 传统关键词检索是「字面匹配」: Embedding 做的是「语义匹...
面试
八股文2026-08-19
前端面试100题
前端面试 100 题 适用方向:中高级前端 / React / Vue / Next.js / Nuxt / TypeScript / 工程化 / 实时通信 / Electron / Node.js / AI 应用前端 使用方式:优先掌握“标准回答”,再练“面试官追问”,最后把“结合你的简历怎么答”组织成自己的项目故事。 说明 “结合你的简历怎么答”只使用你简历中已经出现的项目与技术事实。 “标准回答 / 追问”属于通用前端知识总结,用...
面试
八股文2026-08-19
深入理解 JavaScript 原型与原型链:从关系图到核心逻辑 - heshanwan - 博客园
在 JavaScript 世界里, 原型(Prototype)和原型链(Prototype Chain) 是理解对象继承、属性查找机制的基石。很多开发者初学时对它们 “又爱又恨”,这篇文章将结合经典关系图,用通俗易懂的方式拆解原型与原型链的核心逻辑,帮你彻底掌握这套机制! &nbsp; 一、先搞懂几个核心概念 在分析关系图前,先明确 JavaScript 中与原型相关的关键概念,避免后续混淆: 1\. 函数对象与普通对象 函数对象 :由...
面试
八股文2026-08-17
JavaScript 闭包
摘要 :闭包(Closure)是 函数与其词法环境(Lexical Environment)的组合 ——一个函数可以"记住"并访问它被创建时所处的外部作用域中的变量,即使它在该作用域之外被执行。一句话记忆: 函数打包了出生地的变量,走到哪都能用 。核心要点:① 内部函数引用外部变量即形成闭包;② 闭包实现变量私有化/数据封装/柯里化;③ 潜在风险是内存泄漏和循环引用;④ 避免泄漏需手动解除引用和及时移除监听器。 一、什么是闭包 1.1...
面试
八股文2026-08-17
this 指向与 call / apply / bind
第 1 段(10min)回顾与预习:为什么必须搞懂 this 1.1 先接昨日(闭包)的线 昨天你学了 闭包 。闭包解决的是"函数记住它定义时所在作用域里的变量"。 闭包回答的问题是: “这个函数能访问到哪些变量?” → 看定义位置(词法作用域)。 而今天的主角 回答的是一个完全不同的问题: “这个函数执行时,站在谁的角度说话?” → 看 调用位置 (谁调用的、怎么调用的)。 一句话概括两者的分工: 变量看 定义处 , 看 调用处 。这...
面试
八股文2026-08-17
事件循环与宏任务 / 微任务
第 1 段(10min)回顾与预习:接住昨天的线 1.1 先接昨日(原型链)的线 昨天你学了 对象怎么找属性 (沿原型链上溯)。今天换一个维度: 代码怎么排队执行 。 把前三天的知识串成一句话,你已经有了 JS 的三张地图: 1.2 先凭直觉回答 4 个小问题(不用对,先写下答案) 学完第 2、3、4 段再回来对照。第 1 段只做一件事:记住画面—— JS 单线程,但靠"排队 + 轮转"假装多线程 。 第 2 段(15min)知识块①:...
面试

评论

请登录后发表评论

去登录
加载评论中...