JS중급_for in/for of, enumerable, iterable
▶️ for in 반복문
var newObject = {name : "Kim", age : 30};
for (var key in new Object) {
console.log(newObject[key]);
}
/*
kim
30
*/
- for in 반복문은 Object에 저장된 자료들을 하나씩 꺼내고 싶을 때 사용한다.
- 위 예시처럼 사용하면 반복시 변경되는 key 값을 출력가능하다. (key라고 안쓰고 다른 변수명으로 사용 가능)
- key는 단순 변수명으로 newObject.key이런식으로 쓰지 않는다.
▶️ for in 반복문의 특징 1.enumerable
var newObject = {name : "Kim", age : 30};
console.log(Object.getOwnPropertyDescriptor(newObject, 'name'));
}
// 콘솔창 출력결과 :
// {value : "Kim", writable: true, enumerable: true, configurable: true}
- getOwnPropertyDescriptor는 프로퍼티의 속성을 출력해주는데, 결과값은 위와 같다.
- for in 반복문을 사용하려면 이 중 enumerable라는 속성이 true여야한다. (enumerable : 셀 수 있는)
▶️ for in 반복문의 특징 1.enumerable
var newObject = {name : "Kim", age : 30};
console.log(Object.getOwnPropertyDescriptor(newObject, 'name'));
}
// 콘솔창 출력결과 :
// {value : "Kim", writable: true, enumerable: true, configurable: true}
- getOwnPropertyDescriptor는 프로퍼티의 속성을 출력해주는데, 결과값은 위와 같다.
- for in 반복문을 사용하려면 이 중 enumerable라는 속성이 true여야한다. (enumerable : 셀 수 있는)
▶️ for in 반복문의 특징 2.부모 prototype
class mother {
}
mother.prototype.name = "park";
var newObject = new mother();
for (var key in newObject ){
console.log(newObject[key])
};
// park
for in의 문제는 부모가 가지고 있는 자료까지 출력한다는 것이다. 이를 방지하기 위해선 if문을 따로 추가해준다.
class mother {
}
mother.prototype.name = "park";
var newObject = new mother();
for (var key in newObject ){
if(newObject.hasOwnProperty(key)){
console.log(newObject[key])};
};
// park
- hasOwnProperty()라는 함수는 오브젝트가 이 key값을 직접가지고 있냐를 물어보는 함수이다. 가지고 있다면 true, 없으면 false를 뱉어낸다.
- 오브젝트가 직접 가지고 있는 key값만 출력하고 싶을때 사용한다.
▶️ for of 반복문
var arr = [1,2,3,4,5];
for (var data of arr) {
console.log(data);
};
console.log( arr[Symbol.iterator]()); //Object [Array Iterator] {}
- for of 반복문을 사용하면 배열안에 있는 모든 자료를 하나씩 콘솔창에 출력이 가능하다.
- array, 문자, arguments, NodeList, Map, Set 자료형에 적용할 수 있다.
- 더 정확히말하면 iterable인 자료형에만 사용이 가능한데, Symbol.iterator라는 일종의 메서드를 가지고 있는 자료형들을 뜻한다.
Author And Source
이 문제에 관하여(JS중급_for in/for of, enumerable, iterable), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@arsshavin/JS중급for-infor-of-enumerable-iterable저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)