์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์
์ ๊ฐ ๋ณต์ฌ๋ฅผ ๊ณต๋ถํ๋ค๊ฐ ์์ ๋ณต์ฌ๋ฅผ ์ํด for of๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
๊ทธ๋ฐ๋ฐ ๊ทธ ๊ณผ์ ์ for in์ผ๋ก ํด๋ ๋๋๊ฑฐ ์๋๊ฐ ์ถ์ด์ for of์ for in ์ ํํ ์ฐจ์ด๊ฐ ๊ถ๊ธํด์ก๋ค!
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด for in์ ๊ฐ์ฒด์๊ฒ ์ต์ ํ ๋์ด์๊ณ , for of๋ ์ปฌ๋ ์ (array, string, map, set)์๊ฒ ์ต์ ํ ๋์ด์๋ค. ๊ทธ ์ด์ ๋ ์๋์์ ์ค๋ช ํ๊ฒ ๋ค.
for in์ mdn ๋ฌธ์๋ฅผ ๋ฐํ์ผ๋ก ์ค๋ช ํ์๋ฉด,
for...in๋ฌธ์ ์์๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ๋ค์ ํฌํจํ์ฌ ๊ฐ์ฒด์์ ๋ฌธ์์ด๋ก ํค๊ฐ ์ง์ ๋ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๋ํด ๋ฐ๋ณตํฉ๋๋ค. (Symbol๋ก ํค๊ฐ ์ง์ ๋ ์์ฑ์ ๋ฌด์ํฉ๋๋ค.)
... ์ค๋ต
์์์ ์์๋ก ๊ฐ์ฒด์ ์์ฑ๋ค์ ๋ํด ๋ฐ๋ณตํฉ๋๋ค.
๊ทธ๋ ๋ค . for in์ ์์์ ์์๋ก ๊ฐ์ฒด์ ์์ฑ๋ค์ ๋ํด ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ index๋ผ๋ ์ค์ํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฐฐ์ด์์ ์ฌ์ฉํ๋ฉด ๋ง์งฑ ๋๋ฃจ๋ฌต์ด๋ผ๋๊ฑฐ๋ค. mdn ๋ฌธ์์์๋ for in์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ง ์์ ๊ฒ์ ๊ถ์ฅํ๊ณ ์๋ค.
๊ทธ๋ฆฌํ์ฌ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๋ฌด์ํ๋ for in์ ๋ฐฐ์ด์ ํ์ฉํ๋ฉด ์๋๋ ๊ฒ์ ์ดํดํ์ง๋ง, for of์ ๊ฒฝ์ฐ ๊ฐ์ฒด์์๋ ์ ์ฌ์ฉํ๋๊ฑฐ ๊ฐ์๋ฐ ๋ญ๊ฐ ๋ค๋ฅด์ง! ์ถ์๋ค.
for of๋ mdn ๋ฌธ์๋ฅผ ๋ฐํ์ผ๋ก ์ค๋ช ํ์๋ฉด,
for...of ๋ช ๋ น๋ฌธ์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด (Array, Map, Set, String, TypedArray, arguments ๊ฐ์ฒด ๋ฑ์ ํฌํจ)์ ๋ํด์ ๋ฐ๋ณตํ๊ณ ๊ฐ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๋ฌธ์ด ์๋ ์ฌ์ฉ์ ์ ์ ๋ฐ๋ณต ํํฌ๋ฅผ ํธ์ถํ๋ ๋ฃจํ๋ฅผ ์์ฑํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฌธ : ๊ฐ์ฒด๋ for...of ์ ์ผ๋๊ฑฐ ๊ฐ์๋ฐ?
๊ทธ๋ฆฌํ์ฌ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ง๋ณด๋ฉด
let person = {
name : 'jisu',
age : 12
};
for (let i of person) {
console.log(i); // TypeError : person is not literable!
}
person ๊ฐ์ฒด๋ฅผ for of ๋ฌธ์ ๋ฐ๋ก ์ฌ์ฉํด๋ณด๋ฉด ํด๋น ๊ฐ์ฒด๊ฐ ๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์๋ค๊ณ ๋์จ๋ค! ๊ทธ๋์ Object.keys()๋ Object.entries() ๋ฑ์ ์ฌ์ฉํ๊ตฌ๋ ์ถ์๋ค. ์ค๋ค๋ ๋ฐฐ์ด์ ๋ฐํํ๋๊น ๋ฐ๋ก For of๋ฌธ์ ์ฌ์ฉํ ์ ์์๋๊ฑฐ์ง..
let person = {
name : 'jisu',
age : 12
};
for (let [key, value] of Object.entries(person)) {
console.log(i);
// name jisu
// age 12
}
๋ฐ๋ผ์ ์์ ๊ฐ์ด ๊ฐ์ฒด์ ํค ๊ฐ์ด๋ ๋ฐธ๋ฅ, ํ๋กํผํฐ ์ ์ฒด๋ฑ์ ๋ฐฐ์ด๋ก ๋ฐํํ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ for of ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค!
๋ ๋ฒ์งธ ์๋ฌธ : map, set๋ ๋๋ค๊ณ ?
let a = new Map();
a.set(1,'one');
a.set(2,'two');
// a = Map(2) {1 => 'one', 2 => 'two'}
for (let i of a) {
console.log(i);
// [1, 'one']
// [2, 'two']
}
map ์๋ฃ๊ตฌ์กฐ๋ก for of ๋๋ฆฌ๋ฉด ๋ฐฐ์ด๋ก ๋ฐํํจ ใ
ใ
๊ทธ๋ผ set์...
let set = new Set();
set.add(1);
set.add('two');
set.add([3, 'three]);
// set = Set(3) {1, 'two', Array(2)}
for (let i of set) {
console.log(i, typeof i);
// 1 'number'
// two string
// [3, 'three'] 'object'
}
์ ๋ฒ์ ์ผ๊ตฌ๊ฒ์ ๋๋ค ์ซ์ ์์ฑํ ๋ set์ผ๋ก ํ๊ณ (์ค๋ณต ์๋๊ฒ ํ๋ ค๊ณ ) ๊ทธ๊ฑฐ ํ์ฉํ ๋, set์์ ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ณ ๋ค์ ์คํธ๋ง์ผ๋ก ๋ฐ๊ฟจ๋๋ฐ ๊ทธ๋ฅ for of๋ฌธ ๋๋ ค์ ๋น๊ตํด๋ ๋๋ ๊ฒ์ด์๋ค!!!!!!ใ
ใ
์ง๊ธ์ด๋ผ๋ ์์์ ๋คํ
verified idiot which is me...