문제

JavaScript의 진술에 대한 for..in과 각각의 차이점은 무엇입니까? 내가 모르는 미묘한 차이가 있습니까? 아니면 동일하고 모든 브라우저가 다른 이름을 가지고 있습니까?

도움이 되었습니까?

해결책

"각각에 대해 ..." 지정된 변수를 반복합니다 모든 값 지정된 개체의 속성.

예시:

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8

원천

"for ... in" 지정된 변수를 반복합니다 모든 속성 임의 순서로 객체의.

예시:

function show_props(obj, objName) {
   var result = "";
   for (var i in obj) {
      result += objName + "." + i + " = " + obj[i] + "\n";
   }
   return result;
}

원천


참고 03.2013, for each... in 루프입니다 감가 상각 된. MDN이 권장하는 '새로운'구문은입니다 for... of.

다른 팁

이 데모는 희망적으로 차이점을 설명해야합니다.

var myObj = {
    a : 'A',
    b : 'B',
    c : 'C'
};
for each (x in myObj) {
    alert(x);        // "A", "B", "C"
}
for (x in myObj) {
    alert(x);        // "a", "b", "c"
    alert(myObj[x]); // "A", "B", "C"
}

우수한 MDC 문서를 읽으십시오.

그만큼 첫 번째 컬렉션에 대한 정상 루핑과 객체의 속성에 대한 임의로입니다.

a ... in loop은 내장 속성을 반복하지 않습니다. 여기에는 String의 Indexof 메소드 또는 Object의 Tostring 메소드와 같은 모든 내장 객체 방법이 포함됩니다. 그러나 루프는 모든 사용자 정의 속성 (내장 속성을 덮어 쓰는 것 포함)을 반복합니다.

a ... 루프는 임의 순서로 객체의 속성을 반복합니다. 속성이 하나의 반복으로 수정 된 다음 나중에 방문한 경우 루프에 노출 된 값은 나중에 그 값이됩니다. 방문하기 전에 삭제 된 부동산은 나중에 방문되지 않습니다. 반복이 발생하는 객체에 추가 된 특성은 반복에서 방문하거나 생략 될 수 있습니다. 일반적으로 현재 방문중인 속성 이외의 반복 중에 물체에서 속성을 추가, 수정 또는 제거하지 않는 것이 가장 좋습니다. 추가 된 자산이 방문 될지 여부, 수정 된 재산이 수정 전후에 방문 될지 여부 또는 삭제되기 전에 삭제 된 재산을 방문할지 여부는 보장되지 않습니다.

그만큼 후자 객체의 속성을 반복 할 수 있습니다.

객체 속성의 모든 값보다 지정된 변수를 반복합니다. 각각의 별개의 속성에 대해 지정된 명령문이 실행됩니다.

다른 답변 외에도 for each...in ECMA 표준의 일부가 아니며 또한 다가오는 판 3.1. JavaScript 1.6에서 소개되었습니다. ECMAScript3의 확장 모질라 재단에 의해.

링크 된 Wikipedia 페이지에 따르면 Firefox 1.5+ 및 Safari 3.x (+?)에서만 구현됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top