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

为何未定义element、what变量代码仍可运行?forEach参数机制解惑

关于Array.forEach()参数自动传递的疑问

你的代码:

let prices= ["cartoon", "what" , "sanjay"];
prices.forEach(loop);

function loop(element , what ){
    document.write( what+":"+ element + "<br>");
}

问题核心

你疑惑为什么没手动定义element和what变量,代码却能正常运行,且这两个变量分别对应数组元素值和索引。

解答

这是Array.forEach()方法的内置行为:

  • forEach是数组的遍历方法,它会自动逐个遍历数组里的元素。
  • 每次遍历到一个元素时,它会主动调用你传给它的回调函数(这里就是loop),并且按照固定顺序给这个回调函数传参:第一个参数是当前遍历到的元素值,第二个是该元素的索引,第三个(你没用到)是原数组本身。
  • 你写的element和what是loop函数的形参,当forEach调用loop时,会把当前元素值、索引作为实参传进来,JavaScript会自动把这些实参赋值给对应的形参——就像你手动写loop("cartoon", 0)一样,形参会自动承接传入的值,不需要你提前在外部定义它们。
  • 函数的形参本身就相当于在函数内部声明了变量,所以不会出现“变量未定义”的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:05