2009-05-28 5 views
2

가능한 중복 :
Elements order - for (... in ...) loop in javascript
javascript의 객체 변수가 추가 된 순서대로 열거되어 있습니까?

는이 같은 코드가 있다고 가정 :

var a = {} 
a.a = 1; 
a.c = 2; 
a.b = 3; 

for (var i in a) { 
    console.log(a[i]); 
} 

은 1, 2, 3 순서대로 인쇄 될 보장이 있습니까? 나는 테스트를했고 이것은 지금까지의 경우 였지만, 그것이 항상 사실인지는 모르겠습니다. 이 작업을 수행하지 않는 브라우저가 있습니까? 물건을 삭제하거나, 상속을 프로토 타입하는 등의 이상한 일은 없습니다. 객체에 속성을 추가하기 만하면됩니다.

+1

이것은 좋은 질문이지만 실제 중복입니다. http://stackoverflow.com/questions/280713/elements-order-for-in-loop-in-javascript, 질문 ID : 280713 –

답변

3

Chrome을 제외한 모든 현재 브라우저는 정의 된 순서대로 객체의 속성을 반복합니다.

크롬 버그 신고 : http://code.google.com/p/chromium/issues/detail?id=883입니다. 현재 WontFix으로 표시되어 있습니다.

+0

http : // www.ecma-international.org/publications/files/ECMA-ST/Ecma-357.pdf : 아이템이 컬렉션 의 멤버에 바인딩되는 순서는 구현에 따라 다릅니다. 순서가 중요 할 때 배열을 사용하는 것이 더 적절할 것이라고 생각합니다. – harto

+0

@harto : 멋진 링크. 이 인용문은 실제로는 "for each"루프 구문을 가리키고 있지만, "for for"와 같은 것을 말하는 비슷한 문서가 있습니다. 어느 쪽의 방법이라도 V8이 이것을 곧 "고칠"수없는 이유 다. –

+0

@harto : ecmascript 5에서 순서는 삽입 순서로 정의됩니다. – olliej

1

내 현재 Chrome 버전 (2.0.172.28)에서 John Resig의 테스트 사례가 통과되었으므로 이제 Chrome에서 수정되었을 수 있습니까?

관련 문제