Javascript 混淆生成斐波那契序列

Javascript 混淆生成斐波那契序列,javascript,Javascript,(i)当我在代码下面运行时, var fib = []; for(var i=1; i<=10; i++){ if (i === 1) { fib[0] = 0; } else if (i == 2) { fib[1] = 1; } else { fib[i] = fib[i-2] + fib[i-3]; console.log(fib[i]); } } Output: 0 1 undefined

(i)当我在代码下面运行时,

var fib = []; 
for(var i=1; i<=10; i++){ 
    if (i === 1) {
      fib[0] = 0;
    } else if (i == 2) {
        fib[1] = 1;
    } else {
        fib[i] = fib[i-2] + fib[i-3];
      console.log(fib[i]);
    }
}

Output: 0 1 undefined 1 NaN NaN
var fib=[];

对于(var i=1;i一个接一个地遵循循环迭代

在第三次迭代中

fib[2]=fib[2-2]+fib[2-3];
is
fib[2]=fib[0]+fib[-1];

fib[2]=0+未定义;

fib[2]=未定义;

在第四次迭代中

fib[3]=fib[3-2]+fib[3-3];
is
fib[3]=fib[1]+fib[0];

fib[3]=1+0;

在第五次迭代中

fib[4]=fib[4-2]+fib[4-3];
is
fib[4]=fib[2]+fib[1];

fib[4]=未定义+1;

fib[4]=NaN;

其余的你都能搞定

顺便说一句,您可以使用带有断点的调试器


在这种情况下,它将非常有用。

您从未设置fib[2]阅读您的代码。当
i=2
时会发生什么情况?第二个代码不会失败,因为它会将新元素推送到数组中。第一个代码失败,因为它尝试访问数组中一开始就不存在的值。非常感谢阿里先生,现在我一步一步地得到了答案,但我从不使用调试器,我如何使用调试器!欢迎您,检查谷歌的firebug。关键词:调试、浏览器、断点等。我想在本地文件上使用断点和调试器,而firebug在本地页面上不起作用!你知道任何其他可以在本地文件上工作的方法吗?一点谷歌搜索:)
function generateFib(num) {
  var fib = []; 
  for(var i=1; i <= num; i++) {
    if (i === 1) {
      fib.push(0);
    } else if (i == 2) {
      fib.push(1);
    } else {
      fib.push(fib[i - 2] + fib[i - 3]);
    }
  }
  return fib;
}
generateFib(10);

Output:  0  1   1   2   3   5