📢 어렵고 정석적인 개념 설명보다는 저같은 초보자도 이해하기 쉽게 정리하는 것을 원칙으로 포스팅하고 있습니다. 😄
[JavaScript] 비교하며 알아보는 for~in과 for~of 문법
JavaScript
2022. 4. 20. 23:49
for~in
const arr = [1, 2, 3, 4, 5];
for (let value in arr){
console.log(value); // 0, 1, 2, 3, 4 (인덱스 반환)
}
배열에서 for~in문을 사용하면 각 배열 원소의 인덱스를 반환한다.
초기값은 인덱스를 나타내며, indexOf() 메서드를 사용한 것처럼 배열 전체 원소의 인덱스를 반환해준다.
const obj = {name: "Shawn", age: 29, sex: "Male"};
for (let value in obj){
console.log(value) // name, age, sex (key 반환)
console.log(obj[value]) // Shawn, 29, Male (value 반환)
}
객체에서 for~in문을 사용하면 해당 객체의 key 값을 전부 반환한다.
초기값은 key 값을 나타내며, Object.keys(obj)를 사용한 것처럼 객체의 key 값 전부를 반환해준다.
만약, key 값이 아닌 value 값을 받고 싶다면 obj[value]와 같은 형태로 value 값을 받아올 수 있다.
for~of
const arr = [1, 2, 3, 4, 5];
for (let value of arr){
console.log(value) // 1, 2, 3, 4, 5 (원소를 반환)
}
/* forEach()로 배열의 원소를 받아올 때 */
arr.forEach(i => console.log(i)); // 1, 2, 3, 4, 5
배열에서 for~of문을 사용하면 배열의 인덱스가 아닌 원소를 전부 반환해준다.
초기값은 배열의 각 원소를 나타내며, forEach()를 사용하는 것과 같다.
객체는 for~of문에서 사용할 수 없다. 객체는 Iterable Object가 아니기 때문이다.
Iterable이란 배열처럼 하나씩 차례로 반환 가능한 것을 말하는데, 객체는 이에 해당하지 않는다.
만약 굳이 객체에 for~of문을 써야겠다면, Object.keys() 등과 같은 메서드로 객체를 배열화시킨 다음, 그 다음에 만들어진 배열을 대상으로 for~of문을 사용하면 된다.
배열의 원소들을 하나씩 추출하고 싶으면 for~of
배열의 원소들의 '인덱스'를 하나씩 추출하고 싶으면 for~in
객체의 key 값들을 모두 추출하고 싶으면 for~in
for는 그냥 반복문, for 뒤에 뭔가 붙어있다면 반복문이긴 한데 모든 원소(프로퍼티)에 접근하는 순회 반복문
'JavaScript' 카테고리의 다른 글
[JavaScript] 자기 안에 저장소를 가지고 있는 reduce() (0) | 2022.05.02 |
---|---|
[JavaScript] 비동기 처리 Promise, async-await 문법 맛보기 (0) | 2022.04.23 |
[JavaScript] 알아두면 유용한 배열 메서드 (map(), forEach() 등) (0) | 2022.04.14 |
[JavaScript] 스크롤 제어하기 및 스크롤 숨기는 방법 (0) | 2022.04.07 |
[JavaScript] 스크롤을 내리면 한 섹션씩 내려가는 이벤트 구현하기 (2) | 2022.03.22 |