You need to enable JavaScript to run this app. JavaScript for循环括号写法对findMultiples函数数组返回结果的影响解析
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript for循环括号写法对findMultiples函数数组返回结果的影响解析

两种循环写法结果差异的核心原理

这个现象和括号本身没有直接关联,本质是两条JS基础规则叠加的结果:一是流程控制语句的作用范围判定逻辑,二是return语句会立即终止当前函数执行,不管后续循环有没有跑完。

第一种写法只返回单个元素的原因

你给第一种写法的for循环加了花括号{},按照JS语法,花括号包裹的所有代码都会被纳入循环体的执行范围。这种写法下,循环体包含两条连续逻辑:

  • 把当前遍历到的倍数ipush到数组中
  • 执行return arr直接终止函数、返回当前数组
    循环第一圈就会走完完整的流程:取第一个满足条件的倍数i = integerpush进空数组,马上触发循环体内的return,直接结束整个函数的执行,后续所有循环迭代根本不会被触发,最终自然只能拿到只有单个元素的数组。

第二种写法能返回全量结果的原因

第二种写法的for循环没有加花括号{},按照JS语法规范:不带花括号的for/if/while这类流程控制语句,作用范围只会覆盖紧跟在它后面的第一条独立语句。
这种写法下,只有arr.push(i)这一句属于循环体内容,后面紧跟的return arr完全在循环的管辖范围之外。执行逻辑是:

  1. for循环独立跑完所有迭代,把所有不超过limit的倍数依次push进数组
  2. 等循环整体结束、没有可执行的迭代之后,才会执行循环外的return arr,返回收集完成的全量数组

常见认知误区

不少人误以为第一种写法的return是写在循环外面的,本质是对“代码换行不改变作用域绑定”的规则不熟悉——只要代码落在循环对应的花括号范围内,不管中间空多少行、换几次行,都会被算成循环体的一部分。如果把第一种写法里的return arr移到花括号外面,最终的返回结果会和第二种写法完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 21:45:11