1, 의 경우
For 루프는 가장 오래되고 가장 널리 사용되는 순회로, 대부분의 순회를 만족시킬 수 있다. 배열, 객체 및 문자열을 반복할 수 있습니다. 예를 들면 다음과 같습니다.
2, 의 경우 ...
In 이 ES5 에 추가되어 상속된 열거 가능 속성을 포함하여 Symbol 이외의 객체의 열거 가능 속성을 임의의 순서로 순회합니다.
3, 의 경우 ... 정보
숲 ... of 문은 배열, 매핑, 입력, 문자열, 유형 배열, 매개 변수 객체 등을 포함한 반복 가능한 객체에 반복 루프를 만듭니다. ), 사용자 정의 반복 후크를 호출하고 각 다른 속성 값에 대해 이 문을 실행합니다.
4, 대기 ... 정보
내장 String, Array, class array 객체 (arguments 또는 nodeList), TypedArray, Map, Set 및 사용자 정의 비동기/동기화 반복자를 포함하여 비동기 및 동기화 반복 객체를 통과하는 루프를 만듭니다.
객체의 각 다른 속성 값을 사용하여 실행할 문을 호출하여 사용자 정의 반복 후크를 호출합니다.
Await 연산자와 마찬가지로 이 문은 비동기 함수에서만 사용할 수 있습니다.
5, 외국어
ForEach 는 ES5 릴리스에 게시되며 콜백 함수는 배열에서 유효한 값이 있는 각 항목에 대해 오름차순으로 실행됩니다. 삭제되거나 초기화되지 않은 항목은 생략됩니다 (예: 스파스 배열). 일반적으로 일반 for 루프의 향상된 버전으로 간주됩니다.
6, 지도
순회할 때 새 배열을 반환할 수 있습니다. 새 배열의 결과는 원래 배열의 각 요소가 제공된 함수를 한 번 호출한 후 반환된 값입니다.
1, 장면 차이 사용
For 루프는 가장 오래되고 가장 원시적인 루프 트래버스 문입니다. For 는 내부적으로 변수를 정의하고 조건 (일반적으로 배열의 길이) 에 따라 순환합니다. 길이가 초과되면 루프가 중지됩니다. 일반적으로 배열 또는 클래스 배열을 통과합니다.
객체를 트래버스할 때 객체에 길이가 없기 때문에 Object.keys () 를 사용하여 객체의 모든 속성을 가져오고 배열로 반환합니다.
For/in 은 주로 프로토타입 객체의 속성을 포함하여 객체의 열거 가능한 속성을 임의의 순서로 순회하는 데 사용됩니다. 객체를 통과할 때 속성의 키 값을 가져오고, 배열을 반복하고, 배열의 아래 첨자를 키 값으로 사용합니다.
For/of 는 배열, Map, Set, String, TypedArray, arguments 객체 등을 포함한 iterable 객체의 데이터를 순회하는 데 사용됩니다.
대기 ... of 는 비동기 함수 내에서만 사용할 수 있는 비동기 반복 객체를 트래버스하는 데 사용됩니다.
ForEach 는 for 의 업그레이드 버전으로, 사용하기 쉽고, 더 많은 인수를 가지고 있지만, 본질은 배열의 루프이며, 각 요소는 원래 배열을 변경하지 않고 콜백을 수행합니다.
Map 은 원래 배열의 각 요소를 리콜하여 원래 배열을 변경하지 않고 새 배열을 반환합니다.
2. 기능 차이
ForEach 및 map 은 exchange 루프를 지원하지 않으며 다른 루프도 지원하지 않습니다.
대기 중 ... 은 비동기 작업을 지원할 수 있고 다른 은 지원하지 않습니다.
순수 객체 순회의 경우 ... in 열거에 더 편리합니다.
배열 순회의 경우 인덱스가 필요하지 않으면 For ... 를 사용하여 직접 값을 가져오고 break 또는 return 을 지원할 수 있습니다. 인덱스가 필요한 경우 forEach 가 더 적합하지만 return 은 지원되지 않습니다.
한 배열이 다른 배열에 매핑되는 경우 맵을 사용하는 것이 가장 적합합니다.
3. 성능 차이
테스트 환경과 테스트 데이터 조건이 일치하면 성능 순위는 다음과 같습니다.
For & gtfor of & gtforEach & gt 지도> 는 2007 년에 。
추가 함수 호출과 컨텍스트가 없기 때문에 성능이 가장 빠릅니다.
... 멤버를 반복하고 키 값을 직접 읽는 데 사용할 수 있는 반복자 인터페이스가 있는 데이터 구조입니다.
ForEach 는 for 의 문법 설탕으로 많은 매개변수와 문맥이 있어 속도가 느려질 수 있습니다.
Map 은 길이가 같은 완전히 새로운 배열을 반환하기 때문에 배열 생성 및 할당에 따른 성능 오버헤드가 큽니다.
의 경우 ... 객체의 모든 속성을 열거해야 하고 변환 프로세스가 있어 오버헤드가 상대적으로 높기 때문에 성능이 가장 낮습니다.
프로젝트 개발에서, 우리는 실제 요구에 따라 순회에 적합한 것을 선택해야 한다. 다음은 몇 가지 제안입니다.
해당 부울 값과 같은 다른 배열에 데이터를 매핑해야 하는 경우 원본 배열을 수정하지 않고 구문이 간단한 맵을 사용하는 것이 좋습니다.
배열을 순회할 때 for, forEach 또는 for ... 의 를 사용할 수 있습니다.
권장 용도 ... 일반 객체를 트래버스할 때 사용됩니다.
반복자를 통과해야 하는 경우 for ... 를 사용하는 것이 좋습니다.
배열에서 적합한 배열을 필터링하려면 fillter 를 사용합니다.