You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中函数参数里的"..."(三个点)是什么?

JavaScript中函数参数...语法的详解

你看到的...stores里的...是JavaScript的**剩余参数(Rest Parameters)**语法,专门用来处理函数接收可变数量参数的场景,我给你一步步解释清楚:

核心功能

剩余参数的作用是:把函数调用时传入的所有未被单独声明的参数,打包成一个标准的JavaScript数组。

比如在你的代码里:

function StoreMixin(...stores) {
  // 这里的stores就是一个数组,包含调用该函数时传入的所有参数
}

// 举个调用例子:
StoreMixin(UserStore, CartStore, OrderStore);
// 此时stores变量的值就是 [UserStore, CartStore, OrderStore]

在你的Mixin代码里的实际价值

看你贴的代码片段,Mixin在componentDidMount和componentWillUnmount中用到了stores.forEach()——正因为...把所有传入的store打包成了数组,才能直接用数组的遍历方法,给每个store统一添加/移除状态变更监听。如果没有这个语法,你根本没法方便地处理多个store的传入需求。

和arguments对象的区别

你可能会联想到arguments对象,但剩余参数比它更实用:

  • arguments是一个类数组对象,必须先转成真正的数组才能使用forEach、map这类数组方法;而剩余参数本身就是标准数组,直接就能用所有数组API
  • 剩余参数可以和普通参数搭配使用,比如function initConfig(defaults, ...customConfigs),这样defaults接收第一个参数,customConfigs接收剩下的所有参数组成的数组

额外补充:展开语法(Spread Syntax)

另外,...还有一个相反的用法叫展开语法,它是把数组/可迭代对象拆成单个参数传递给函数。比如:

const numbers = [10, 20, 30];
Math.max(...numbers); // 等价于 Math.max(10, 20, 30)

这和剩余参数是互补的语法,经常一起出现在现代JavaScript代码里。

这个语法在处理不确定数量的参数时非常方便,像你的StoreMixin这种需要接收任意数量store的场景,简直是量身定做的解决方案。


内容的提问来源于stack exchange,提问作者Nicolas S.Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:39:40