JSMock的奇怪问题

时间:2010-07-18 23:24:05

标签: javascript unit-testing foreach

有人可以解释这里发生了什么,以及如何解决?我正在使用JSMock,并在spec.js中执行以下代码:

for (var t in []) {
    alert(t)
}

...导致我的浏览器警告“eachIndexForJsMock”(当它不应该执行alert命令时)。这会弄乱我的for each循环。我该如何解决?

1 个答案:

答案 0 :(得分:1)

问题在于JSMock augments the Array.prototype object

for-in语句用于枚举对象属性,对于数组和类似数组的 1 对象,始终建议使用迭代循环,例如:

for (var i = 0; i < arr.length; i++) {
  //...
}

您应该避免for-in类似于数组的对象,因为:

  • 无法保证迭代的顺序,可能无法按数字顺序访问索引。
  • 还枚举了继承的属性。

另见:

[1] array-like 我的意思是任何包含顺序编号属性和length属性的对象。