Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바문제풀이
- node
- webpack
- github
- JavaScript
- react-router-dom
- @media
- HTML
- git
- 자바
- 반응형 페이지
- JS
- 프론트엔드
- 코드업
- Servlet
- 코딩테스트
- java
- max-width
- 변수
- 그럼에도 불구하고
- redux
- TypeScript
- cleancode
- node.js
- frontend
- react
- media query
- 그럼에도불구하고
- CSS
- coding
Archives
- Today
- Total
그럼에도 불구하고
[JavaScript] for of 문과 for in 문 본문
여려가지 for문에 대해 알아보자
[ for .. of 문 ]
for...of 문은 이터러블을 순회하면서 이터러블의 요소를 변수에 할당한다. for...of 문의 문법은 다음과 같다.
for (변수선언문 of 이터러블) { ... }
for...of 문은 for...in 문의 형식과 매우 유사하다.
for (변수선언문 in 객체) { ... }
하지만 두가지 for문에는 차이가 있다.
for...in 문의 경우 객체 혹은 유사 배열 객체라면 사용할 수 있다.
유사 배열 객체는 마치 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고, length 프로퍼티를 갖는 객체를 말한다.
유사 배열 객체는 length 프로퍼티를 갖기 때문에 for문과 for...in 문으로 순회할 수 있고, 인덱스를 나타내는 숫자 형식의 문자열을 프로퍼티 키로 가지므로 마치 배열 처럼 인덱스로 프로퍼티 값에 접근할 수 있다.
하지만 유사 배열 객체는 이터러블이 아닌 일반 객체이다. 따라서 유사 배열 객체에는 Symbol.iterator 메서드가 없기 때문에 for...of 문으로 순회할 수 없다.
const ary = {
0 : 1,
1 : 2,
2 : 3,
};
for ( let num in ary) {
console.log( ary[num] );
}
for ( let item of ary) {
console.log(item); // TypeError : ary is not iterable
}
단, argument, NodeList, HTMLCollection은 유사 배열 객체이면서 이터러블이다.
다만 ES6에서 도입된 Array.form 메서드를 사용하여 배열로 간단히 변환할 수 있다.
배열도 마찬가지로 ES6에서 이터러블이 도입되면서 Symbol.iterator 메서드를 구현하여 이터러블이 되었다.
// 유사 배열 객체
const arrayLike = {
0: 1,
1: 2,
2: 3,
length: 3
};
// Array.from은 유사 배열 객체 또는 이터러블을 배열로 변환한다
const arr = Array.from(arrayLike);
console.log(arr); // [1, 2, 3]
Array.from 메서드는 유사 배열 객체 또는 이터러블을 인수로 전달받아 배열로 변환하여 반환한다.
'JavaScript > JavaScript basics' 카테고리의 다른 글
[Javascript] 디스트럭처링 할당 (0) | 2023.01.25 |
---|---|
[JavaScript] 스프레드 문법 (0) | 2023.01.19 |
[JavaScript] 심벌이란? (0) | 2023.01.18 |
[JavaScript] 정규표현식이란? (0) | 2023.01.16 |
[JavaScript] 마우스 이벤트란? (0) | 2023.01.10 |
Comments