2010-07-18 8 views
1

누군가 여기서 일어나는 일과 어떻게 고칠 수 있는지 설명 할 수 있습니까? 나는 JSMock을 사용하고 spec.js에서 다음 코드를 실행 해요 : JSMock의 이상한 문제

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

이 (가 전혀 alert 명령을 실행하지 않아야하는 경우) "eachIndexForJsMock"을 경고하기 위해 브라우저를 야기한다. 이것은 내 for each 루프를 엉망으로 만들고있다. 어떻게 수정해야합니까?

답변

1

문제는 JSMock augments the Array.prototype object입니다.

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

for-in 문이 배열 및 배열과 같은 1 객체에 대해, 개체 속성을 열거 에 사용하기위한 것입니다, 항상, 예를 들어 반복 루프를 사용하는 것이 좋습니다

배열과 같은 객체에 for-in을 사용하지 마십시오. 다음과 같은 이유 때문입니다.

  • 반복 순서가 보장되지 않습니다. 인덱스가 숫자 순서로 방문되지 않을 수도 있습니다.
  • 상속 된 속성도 열거됩니다.

참조 :

[1] I 순차 번호 length 특성과 속성을 포함 개체를 의미어레이 형상으로.

+0

자세한 내용은 [Loop Through Array in JavaScript] (http://stackoverflow.com/questions/3010840/loop-through-array-in-javascript/3010848#3010848)를 참조하십시오. – CMS

+0

와우, 그건 정말 비현실적입니다. 필자가 생각하기에 적어도 PHP와 같은 다른 언어로 동작하는 방식으로 작동하는 또 다른 'foreach'구조가 있어야합니다. 귀하의 답변 주셔서 감사합니다! – Chetan