2013-07-16 38 views
1

我遇到拼接方法的问题。在下面的脚本中,如果我将splice的第二个参数设置为'0',它会崩溃我的浏览器。如果我设置为大于'0'的任何其他值,它就可以正常工作。Javascript拼接方法问题

这是怎么发生的?

谢谢,

和代码:

function f (x) { 

    var d = x.toString().split(""); 

    for (i=0; i<d.length; i++){ 
     if (Number(d[i])%2===0){ 
      d.splice(i, 0, "drum"); 
     } 
    } 

    return d; 
}; 
+0

你正在测试哪个浏览器? x的价值是什么? –

+0

Firefox和Chrome。 x是888. – Ciprianis

+1

一旦条件成立,就会在列表的开始处插入一个元素,导致对同一元素重复下一次迭代,导致无限循环。 –

回答

1

及其无限循环,每一次drum是越来越插入到阵列增加其长度。

Splice()将项目插入数组,以便插入新项目。

第一循环:

  • 阵列是8,8,8
  • i是0 // d [0]是8
  • 条件if (Number(d[i])%2===0)true
  • drum插入现在阵列是drum,8,8,8

第二回路:

  • 阵列是drum,8,8,8
  • i是1 // d [i]是8
  • 条件if (Number(d[i])%2===0)true
  • drum插入现在阵列是drum,drum,8,8,8

和它的推移。 ...