iterator
위built in 오브젝트들은디폴트로이터러블프로토콜을갖고있다.
오브젝트에 Symbol.iterator 가 있어야한다. Symbol.iterator 가 있
는오브젝트는이터러블오브젝트이다. 또한상속받은prototype chain에있
어도이터러블오브젝트이다. ( Symbol 에대해서는다음포스팅에서다룰예
정이다.)
forEach 한계
그러나for문중간에 continue or break or return 선언문을사용할
수없다. 기존의for‑statement를사용하는경우를보자.
const categories = ["Korean", "English", "Science"];
for (let i = 0; i < subject.length; i++) {
console.log(categoried[i]);
}
// console>
// Korean
// English
// Science
11.
i 의역할이index를잡아주는것 외에별다른기능이없다. 그래서기존에는
for-instatement 를사용했다. 하지만 for-in statement 은문자열
키를가진일반 Object 객체들을위해만들어졌다.
const categories = ["Korean", "English", "Science"];
for (let item in categories) {
console.log(item);
}
// console>
// 0
// 1
// 2
배열을for‑in으로돌리면그 index가 추출된다.
12.
for‑of statement
for-in loopstatement 는객체의프로퍼티들을루프시키지만 for-of
loop statement 는데이터, 즉배열내의value들을루프시킨다. 또한for‑
of는배열뿐만아니라다양한Collection에도동작한다. DOM의
NodeList 같은유사배열객체들에도동작하고 문자열에도동작한다. 문자
열을유니코드문자의배열로취급하는것이다. Set , Map 에대해서도물론
동작한다. key‑value 형식의 Map 에대해서는for (let [key, value] of …) 형
식의 destructuring 을사용한다.
13.
const categories =["Korean", "English", "Science"];
for (let item of categories) {
console.log(item);
}
// console>
// Korean
// English
// Science
단for‑of 가 만능은아니다. Object 의프로퍼티를루프시키려면 for-in
statement 를사용해야한다. 사실 for-in statement 의원래목적이
Object 프로퍼티순회이다. Object를순회하는경우를살펴보자.
14.
let obj ={
one : 1,
two : 2,
three : 3
};
위와같은obj라는오브젝트를정의한다.
15.
for (let keyin obj) {
console.log(key);
}
// console>
// one
// two
// three