for-in 대상은 Object이며 열거 가능한 프로퍼티가 대상 for-of 이터러블 오브젝트가 대상이며 prototype에 연결된 프로퍼티는 대상이 아님
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
let values = [10, 20, 30]; // 테스트를 위해 Array 오브젝트에 임의의 prototype을 추가 Array.prototype.music = function () { return'음악' }; Array.prototype.sports = function () { return'스포츠' }; console.log('<<<< for-in >>>>'); for (var key in values) { console.log(key, values[key]); } console.log('<<<< for-of >>>>'); for (var key2 of values) { console.log(key2); }
7.6 for-of로 Object 열거
Object는 이터러블 오브젝트가 아니므로 for-of문을 열거할 수 없지만 개발자 코드로 사전 처리를 하면 열거할 수 있게 됩니다.
1 2 3 4 5 6 7 8 9 10
let sports = { soccer: '축구', baseball: '야구' }; // Object.keys메서드는 프로퍼티 키를 Array로 변환하며 반환 합니다. let keyList = Object.keys(sports);
for (var key of keyList) { console.log(key); }
7.7 거듭 제곱 연산자
거듭 제곱(Exponenitation) 연산자는 곱하기 문자를 연속하여 2개 작성한 형태(**)로 ES7 스펙에 추가 되었습니다.