>  기사  >  웹 프론트엔드  >  for of와 for in의 차이점에 대한 자세한 설명

for of와 for in의 차이점에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-24 13:32:011373검색

배열 순회는 일반적으로 for 루프를 사용합니다. ES5를 사용하면 forEach도 사용할 수 있습니다. ES5에는 map, filter, some, Every, Reduce, ReduceRight 등과 같은 배열 순회 기능이 있지만 반환 결과는 다릅니다. . 그러나 foreach를 사용하여 배열을 순회하는 경우 break를 사용하여 루프를 중단할 수 없으며 return을 사용하여 외부 함수를 외부 함수로 반환할 수 없습니다.

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[1,2,4,5,6,7]
myArray.name="数组"
for (var index in myArray) {
  console.log(myArray[index]);
}

for in을 사용해도 배열을 순회할 수 있지만 다음과 같은 문제가 있습니다.

1. 인덱스는 문자열 숫자이므로 기하학적 연산을 직접 수행할 수 없습니다.

2 순회 순서가 내부 순서에 따르지 않을 수 있습니다. 실제 배열의 순서

3. for in을 사용하면 프로토타입을 포함하여 배열의 모든 열거 가능한 속성을 순회합니다. 예를 들어 Shangli의 프로토타입 메서드 메서드와 이름 속성

은 for in이 객체 순회에 더 적합하므로 배열 순회에 for in을 사용하지 마세요.

그러면 for 루프를 사용하는 것 외에도 어떻게 하면 배열을 더 간단하고 정확하게 탐색하여 기대치를 달성할 수 있을까요? 즉, ES6의 for of가 더 좋습니다.

Array.prototype.method=function(){
  console.log(this.length);
}
var myArray=[1,2,4,5,6,7]
myArray.name="数组";
for (var value of myArray) {
  console.log(value);
}

기억하세요. for in traverses 배열의 인덱스(즉, 키 이름)이고 for of는 배열 요소 값을 트래버스합니다.

for of는 배열의 프로토타입 속성 메서드와 인덱스 이름을 포함하지 않고 배열의 요소만 순회합니다.

객체 순회는 일반적으로 for in을 사용하여 개체의 키 이름을 순회합니다.

Object.prototype.method=function(){
  console.log(this);
}
var myObject={
  a:1,
  b:2,
  c:3
}
for (var key in myObject) {
  console.log(key);
}

for in은 프로토타입으로 순회할 수 있습니다. myObject의 메서드 메서드, 프로토타입 메서드와 속성을 순회하지 않으려면 루프 내에서 이를 판단할 수 있습니다. hasOwnPropery 메서드는 특정 속성이 객체의 인스턴스 속성인지 여부를 확인할 수도 있습니다. 프로토타입 메서드와 속성을 제외한 ES5의 Object.keys(myObject) 배열을 통해 객체의 인스턴스 속성 구성을 가져옵니다.

for (var key in myObject) {
  if(myObject.hasOwnProperty(key)){
    console.log(key);
  }
}

위 내용은 for of와 for in의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.