代码之家  ›  专栏  ›  技术社区  ›  Chetan

JSmock的奇怪问题

  •  1
  • Chetan  · 技术社区  · 15 年前

    有人能解释一下这里发生了什么,怎么修理吗?我正在使用JSmock,并在中执行以下代码 spec.js :

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

    …使浏览器警告“eachindexforjsmock”(当它不应执行 alert 命令)。这把我搞砸了 for each 循环。我该怎么修?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Christian C. Salvadó    15 年前

    问题是 JSMock augments the Array.prototype object .

    这个 for-in 声明是用来 枚举 对象属性,用于数组和类似数组的 对象,始终建议使用 迭代的 循环,例如:

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

    你应该避免 为了在 在类似数组的对象上,因为:

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

    参见:

    [ 1 ] 类数组 我是指任何包含顺序编号属性和 length 财产。