You need to enable JavaScript to run this app. JS FizzBuzz代码中方括号求值逻辑、['Fizz'][i%3]含义及所属ES版本问询
优惠活动
大模型
产品
解决方案
定价
更多

JS FizzBuzz代码中方括号求值逻辑、['Fizz'][i%3]含义及所属ES版本问询

FizzBuzz代码问题解答

方括号的求值运算逻辑

JavaScript中一对方括号[]有两类核心用途,这段代码里两种用法都用到了,求值顺序遵循「从内到外,从左到右」的规则:

  • 用作数组字面量声明:['Fizz']、['Buzz']里的方括号,作用是直接创建一个长度为1的数组实例,唯一元素分别为'Fizz'和'Buzz',对应索引为0。
  • 用作属性/元素访问符:数组[索引]结构里的方括号,会先计算括号内表达式的返回值,再以该值为索引去取数组对应位置的元素:如果索引存在就返回对应元素,索引不存在就返回undefined。

['Fizz'][i%3]的具体含义

这行是「数组创建+即时按索引取值」的简写写法,拆分后等价于如下逻辑:

// 1. 声明长度为1的数组
const tempArr = ['Fizz'];
// 2. 计算i对3取模的结果作为索引
const index = i % 3;
// 3. 按索引取值
const res = tempArr[index];

实际运行效果:

  • 当i是3的倍数时,i%3结果为0,返回数组索引0的元素'Fizz'
  • 当i不是3的倍数时,i%3结果为1或2,数组没有对应索引,返回undefined
    后续搭配|| ''逻辑,会把undefined转成空字符串,刚好实现非3倍数时不拼接Fizz的效果,['Buzz'][i%5]的运行逻辑完全一致。

整个打印语句的完整逻辑也可以由此推导:两个取数组的结果处理后拼接,如果拼接结果不为空(即属于Fizz/Buzz/FizzBuzz的情况)就输出字符串,否则输出i,刚好满足FizzBuzz的需求。

语法所属ES版本

该写法不属于任何新版本ES的新增特性,数组字面量声明、方括号访问数组元素都是JavaScript最基础的核心语法,从1997年发布的**ES1(ECMAScript 第一版)**就已经纳入标准,所有JS运行环境都原生支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 13:06:03