Search
Duplicate

for-of 문

Syntax: for(variable of iterable){ }
이터러블 오브젝트를 반복합니다.
const list = [1, 2, 3]; for(let k = 0; k < list.length; k++){ console.log(list[k]); }; for(let value of list){ console.log(value); };
JavaScript
복사
iterable
이터러블 오브젝트를 작성
표현식을 작성하면 평가 결과를 사용합니다.
variable
변수 이름 작성
이터러블 오브젝트를 반복할 때마다 variable에 값이 할당됩니다.
배열
배열을 반복하며 엘리먼트를 하나씩 전개합니다.
for( let value of [1,2,3]){ console.log(value); }
JavaScript
복사
String
문자열을 반복하면서 문자를 하나씩 전개합니다.
for( let value of "ABC"){ console.log(value); }
JavaScript
복사
[실행 결과]
A
B
C
NodeList
NodeList를 반복하며 엘리먼트를 하나씩 전개
<ul> <li class="show">첫 번째</li> <li class="show">두 번째</li> <li class="show">세 번째</li> </ul>
HTML
복사
const nodes = document.querySelectorAll(".show"); for(let node of nodes){ console.log(node.textContent); };
JavaScript
복사

for-in, for-of차이점

for-in
열거 가능한 프로퍼티가 대상입니다.
{key: value}형태는 디폴트가 enumerable: true
Object.defineProperty()는 디폴트가 enumerable: false
const obj = { }; Object.defineProperties(obj, { sports:{ enumerable: false, value: "스포츠" }, book: { enumerable: true, value: "책" }, }); for(let item in obj){ console.log(item + ": " + obj[item]); };
JavaScript
복사
for-of
이터러블 오브젝트가 대상
Object는 전개되지 않습니다.
prototype의 프로퍼티도 전개
되지 않습니다.

for-of, Object

Object는 이터러블 오브젝트가 아니기에 for-of 사용이 불가능합니다.
하지만 Object.keys()로 프로퍼티 이름을 배열로 만든 뒤 만든 배열을 for-of로 전개하면 사용가능합니다.
const sports ={ soccer: "축구", baseball: "야구" }; const keyList = Object.keys(sports); for(let key of keyList){ console.log(key + ": " + sports[key]); };
JavaScript
복사