//반복문
// 1. 코드 여러번 실행할때
// 2. array, object 에서 자료 꺼내쓸때.
for (let index = 0; index < array.length; index++) {
const element = array[index];
}
[1, 2, 3].forEach(); //array 전용
for (const key in object) {
//object 전용
if (Object.hasOwnProperty.call(object, key)) {
const element = object[key];
}
}
for (const iterator of ) {
//iterable 전용
}
var 오브젝트 = { name: "Kim", age: 30 };
//kim 말고도 숨겨진 정보들도 있음.
//Object.getOwnPropertyDescriptor(오브젝트, "name");
//{value: "Kim", writable: true, enumerable: true, configurable: true}
// enumerable 은 셀수 있는 이라는 뜻. 반복문에 출력해 줄 것인가?
// 일반 자료들은 항상 enumeralbe 이 true 가 기본값
for (var key in 오브젝트) {
console.log(오브젝트);
console.log(오브젝트[key]);
}
//특징, 1. enumerable 한것만 반복해줍니다.
// 부모의 prototype 도 반복해줍니다.
class 부모 {}
부모.prototype.name = "Park";
var 오브젝트2 = new 부모();
for (var key in 오브젝트2) {
if (오브젝트.hasOwnProperty(key)) {
console.log(오브젝트[key]);
}
} //object 자료형에만 쓴다.
// for of 반복문
//Array, 문자, arguments, NodeLIst, Map, Set
var 어레이 = [2, 3, 4, 5];
for (var 자료 of 어레이) {
console.log(자료);
}
//iterable 한 자료형에만 사용가능
// 자바스크립트는 자료형을 설정할때 flag 같은 걸 심어둠.
//어레이[Symbol.iterator]().next(); //2
//내부데이터출력을 도와주는 함수. 전혀알필요없다.
// 이런걸 내포하는 것들을 iterable 한 자료형이라 한다.
//NodeList는 무엇인가?
//document.getElementsByClassName();
//document.querySelectorAll();
// [HTML1, HTML2] => array 비슷해보이는데 NodeList