JavaScript循环实现Fibonacci序列:变量i的作用及代码报错疑问
斐波那契序列JS实现问题解答
原代码中循环变量i的作用
原代码里,output初始是[0, 1],对应斐波那契数列的前两项。for循环里的i就是个循环计数器,用来控制循环执行的次数:
- 初始已经有2项,要生成总共
n项的话,需要再生成n-2个新项 i从2开始,直到i < n停止,刚好循环n-2次,每次循环往output里push一个新的斐波那契数i和output的后续项没有自动关联,只是靠循环次数来凑够指定的项数。比如n=5时,i会取2、3、4,循环3次,加上初始2项,最终得到5项的数组。
修改代码后报错的原因
你修改后的代码有几个关键问题:
- 变量覆盖:循环里用
var n = 2声明变量,会把原函数的参数n(用来指定生成项数的变量)覆盖掉,导致后续逻辑混乱。 - 循环条件无效:初始
output.length是2,n初始设为2,2 < 2不成立,循环根本不会执行。 - 报错的直接原因:你把循环变量改成了
n,但原代码的其他部分(比如循环外的逻辑)可能还在使用变量i,此时i没有被定义,所以触发Uncaught ReferenceError: i is not defined。
内容的提问来源于stack exchange,提问作者Satin Wichapha
相关产品推荐
相关产品推荐

