for,for in, for of

for ,for in ,for of 사용과 기준

흙으로만든형 2022. 7. 22. 14:11

1. for

원시타입(불변,동결된) 반복문

 

2. for in

for (var index in myArray) {
      console.log(myArray[index]);
}

for in 루프에서 index값에 해당하는 것은 숫자가 아님, 문자열임 ('0','1'....)

이 루프는 배열의 인덱스만 순회하는 것이 아니라, 프로토타입 체인을 포함한 모든 속성을 순회

for in은 배열이 아닌 객체를 순회하기 위해 만들어진 루프

 

for in 반복문은 객체의 속성들을 반복하여 작업을 수행할 수 있습니다. 모든 객체에서 사용이 가능합니다. for in 구문은 객체의 key 값에 접근할 수 있지만, value 값에 접근하는 방법은 제공하지 않습니다. 자바스크립트에서 객체 속성들은 내부적으로 사용하는 숨겨진 속성들을 가지고 있습니다. 그 중 하나가 [[Enumerable]]이며, for in 구문은 이 값이 true로 셋팅되어 속성들만 반복할 수 있습니다. 이러한 속성들을 열거형 속성이라고 부르며, 객체의 모든 내장 메서드를 비롯해 각종 내장 프로퍼티 같은 비열거형 속성은 반복되지 않습니다.

var obj = {
    a: 1, 
    b: 2, 
    c: 3
};

for (var prop in obj) {
    console.log(prop, obj[prop]); // a 1, b 2, c 3

 

3. for of

for of는 for in 으로 배열을 순회할때 생기는 단점을 해결

for of 반복문은 ES6에 추가된 새로운 컬렉션 전용 반복 구문입니다. for of 구문을 사용하기 위해선 컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야만 합니다(직접 명시 가능).

var iterable = [10, 20, 30];

for (var value of iterable) {
  console.log(value); // 10, 20, 30
}

for in 반복문과 for of 반복문의 차이점

  • for in 반복문 : 객체의 모든 열거 가능한 속성에 대해 반복
  • for of 반복문 : [Symbol.iterator] 속성을 가지는 컬렉션 전용
  • https://ko.javascript.info/iterable

-------------[Symbol.iterator]

https://velog.io/@yesdoing/JavaScript-Collections

--------------[Collection]

Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};

var iterable = [3, 5, 7];
iterable.foo = "hello";

for (var key in iterable) {
  console.log(key); // 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (var value of iterable) {
  console.log(value); // 3, 5, 7
}

 

*foreach 반복문(ES5부터 들어간)

foreach 반복문은 오직 Array 객체에서만 사용가능한 메서드입니다.(ES6부터는 Map, Set 등에서도 지원됩니다) 배열의 요소들을 반복하여 작업을 수행할 수 있습니다. foreach 구문의 인자로 callback 함수를 등록할 수 있고, 배열의 각 요소들이 반복될 때 이 callback 함수가 호출됩니다. callback 함수에서 배열 요소의 인덱스와 값에 접근할 수 있습니다.

break, return 등으로 중단 할 수 없음.

var items = ['item1', 'item2', 'item3'];

items.forEach(function(item) {
    console.log(item);
});
// 출력 결과: item, item2, item3

https://jsdev.kr/t/for-in-vs-for-of/2938

 

자바스크립트 for in vs for of 반복문 정리

ES6 공부하면서 for in 과 for of 차이점이 뭔지 궁금해서 찾아보다가 정리해보았습니다. 잘못된 부분이 있으면 커멘트 부탁드려요~ http://itstory.tk/entry/Javascript-for-in-vs-for-of-반복문 foreach 반복문 foreac

jsdev.kr

https://happiness-life.tistory.com/entry/JavaScript-%EA%B0%9D%EC%B2%B4-key-value-%EB%9E%80

 

[JavaScript] 객체( key : value )란?

자바스크립트의 객체는 키(key)와 값(value)으로 구성된 프로퍼티(Property)들의 집합이다. 그리고 배열과는 달리 객체는 프로퍼티를 열거할 때 순서를 보장하지 않는다. 정수 프로퍼티는 자동으로

happiness-life.tistory.com

https://gist.github.com/qodot/ecf8d90ce291196817f8cf6117036997

 

ES6의 심볼, 이터레이터, 제네레이터에 대해 알아보자

ES6의 심볼, 이터레이터, 제네레이터에 대해 알아보자. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com