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

JavaScript sum函数中...arguments、解构赋值及instanceof用法疑问

function sum(...arguments) {
    if (arguments.length === 1) {
        const [firstArg] = arguments;
        if (firstArg instanceof Array) {
            return sum(...firstArg)
        }
    }
return arguments.reduce((a, b) => a + b);
}

问题1:函数参数中arguments前方的...运算符作用是什么?

这里的...是剩余参数运算符,作用是把调用函数时传入的所有离散参数,统一打包成一个数组存储到arguments变量中。
举个例子:如果你调用sum(1,2,3,4),运算符会把传入的4个单独的数字整合成数组[1,2,3,4]赋值给arguments,不需要提前写死形参的数量,就能接住任意多的传入参数。

问题2:代码里const [firstArg]的作用是什么,运行逻辑是怎样的?

这是ES6的数组解构赋值语法,作用是快速提取arguments数组的第一个元素,赋值给变量firstArg。
运行逻辑非常简单:等号右侧是数组时,解构会按索引位置一一对应给左侧的变量,这里左侧只写了一个变量firstArg,就只会取数组索引为0的第一个元素,等效于写const firstArg = arguments[0],语法更简洁直观。

问题3:请用通俗易懂的语言解释instanceof的含义

instanceof的作用是判断某个值是不是指定类别的实例,你可以把它理解成「身份核验」:
左边放你要检查的目标值,右边放对应的类别,核验通过就返回true,不通过就返回false。
举个通俗的例子:面包 instanceof 食物 就会返回真,面包 instanceof 电子产品 就会返回假。本题代码里的firstArg instanceof Array,就是在核验拿到的第一个参数是不是数组类型。

内容的提问来源于stack exchange,提问作者Usman Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:54:03