for...in
for in 반복문은 객체의 모든 열거가능한 속성들을 포함하여, 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복한다. for in 구문은 객체의 key 값에 접근할 수 있지만, value 값에 접근하는 방법은 제공하지 않는다. 객체의 반복을 위해 만들어졌기 때문에 배열의 반복을 위해선 추천되지 않는다.
for(variable in object){
statement;
}
- variable : 매번 반복마다 다른 속성이름(Value name)이 변수로 지정된다.
- object : 반복작업을 수행할 객체로 열거형 속성을 가지고 있는 객체.
예시
let obj = { //[Key],[Value]가 대입된 변수
a: 1,
b: 2,
c: 3
}
for(let list in obj){ //for...in 반복문
console.log(list);
console.log(`${list}: ${obj[list]}`);
}
//a
//b
//c
// "a: 1"
// "b: 2"
// "c: 3"
for...of
for of 반복문은 반복가능한 객체(Array, map, set, string, typedArray, arguments 객체 등을 포함 === [symbol.iterator]속성이 있는 모든 컬렉션)에 대해서 반복한다.
for(variable of iterable){
statement;
}
- variable : 각 반복에 서로 다른 속성값이 변수에 할당된다.
- iterable : 반복되는 열거가능(enumerable)한 속성이 있는 객체
예시
Array에 대해 반복
let arr = [1, 2, 3]
for(let element of arr) {
console.log(element);
}
//1, 2, 3
String에 대해 반복
let arr = 'kimchi';
for(let element of arr) {
console.log(element);
}
//"k"
//"i"
//"m"
//"c"
//"h"
//"i"
for of와 for in의 차이
- for...in : 객체의 모든 열거가능한 속성에 대해 반복한다.
- for...of : 모든 객체보다는, [symbol.iterator] 속성이 있는 모든 컬렉션 요소에 대해 반복한다.
객체일 경우
const obj = {
a: 1,
b: 2,
c: 3
};
for(let list in obj){
console.log(`${list}: ${obj[list]}`);
}
// a: 1
// b: 2
// c: 3
for(let list2 of obj){
console.log(list2);
}
//Uncaught TypeError: obj is not iterable
//at <anonymous>:1:18
배열일 경우
const arr = [1,'kim', 7, 'As', 4];
for(let list in arr){
console.log(`${list}: ${arr[list]}`);
}
// 0: 1
// 1: kim
// 2: 7
// 3: As
// 4: 4
for(let list2 of arr){
console.log(list2);
}
//1
//kim
//7
//As
//4
'FE BE 개발 메모장 > Javascript' 카테고리의 다른 글
자바스크립트 함수의 범위(Scope) (0) | 2020.10.27 |
---|---|
자바스크립트에서 호이스팅이란? (0) | 2020.10.07 |
조건문 if() { (0) | 2020.10.06 |
연산자 (0) | 2020.10.04 |
반복문 for, while (0) | 2020.09.30 |