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

为何使用展开运算符或apply调用函数仅打印首个数组元素?

问题原因

你的函数myfunc只定义了一个参数str,当你用...strings展开数组调用时,虽然把数组里的四个元素都当成独立参数传了进去,但函数只会读取第一个参数,剩下的三个参数没有被函数处理,所以只会打印第一个元素。

解决方法

可以用以下几种方式修复:

方式一:让函数接收所有传入的参数

修改函数参数为剩余参数,这样能接收所有传递过来的参数,再遍历打印:

function myfunc(...strs){
  strs.forEach(str => console.log(str))
}
strings = ["hamza", "Hamza", "name", "Name"]
myfunc(...strings)

方式二:直接传入数组,在函数内部遍历

不用展开数组,把整个数组作为参数传给函数,然后在函数里遍历打印每个元素:

function myfunc(strs){
  strs.forEach(str => console.log(str))
}
strings = ["hamza", "Hamza", "name", "Name"]
myfunc(strings)

方式三:遍历数组逐个调用函数

保持原函数只处理单个元素的逻辑,自己遍历数组,每次调用函数传入一个元素:

function myfunc(str){
  console.log(str)
}
strings = ["hamza", "Hamza", "name", "Name"]
// 用forEach遍历
strings.forEach(str => myfunc(str))
// 或者用for...of循环
for(const str of strings) {
  myfunc(str)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:10