Frontend ๐Ÿ“š/JavaScript

[JS] for...of ๋ช…๋ น๋ฌธ

leejaejae 2023. 12. 4. 22:32

์˜ค๋Š˜์€ ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ์˜ ๋ฐ˜๋ณต๋ฌธ ์ค‘ ํ•˜๋‚˜์ธ for...of ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด์ž.

for...of ๋ช…๋ น๋ฌธ์€ ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(์˜ˆ๋ฅผ ๋“ค์–ด Array, TypedArray, Set, Map...)์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณตํ•˜๊ณ  ๊ฐ ๊ฐœ๋ณ„ ์†์„ฑ๊ฐ’์— ๋Œ€ํ•ด ์‹คํ–‰๋˜๋Š” ๋ฌธ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ˜๋ณต ํ›„ํฌ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๊ตฌ๋ฌธ

for (variable of iterable) {
  statement;
}

variable
๊ฐ ๋ฐ˜๋ณต์— ์„œ๋กœ ๋‹ค๋ฅธ ์†์„ฑ๊ฐ’์ด variable์— ํ• ๋‹น๋œ๋‹ค.

iterable
๋ฐ˜๋ณต๋˜๋Š” ์—ด๊ฑฐ๊ฐ€๋Šฅ(enumerable)ํ•œ ์†์„ฑ์ด ์žˆ๋Š” ๊ฐ์ฒด.

 

์˜ˆ์ œ

let iterable = [10, 20, 30];

for (let value of iterable) {  // let ๋Œ€์‹  const ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ
  console.log(value);
}
// 10
// 20
// 30


/* String์— ๋Œ€ํ•ด ๋ฐ˜๋ณต */
let iterable = "boo";

for (let value of iterable) {
  console.log(value);
}
// "b"
// "o"
// "o"


/* map์— ๋Œ€ํ•ด ๋ฐ˜๋ณต */
let iterable = new Map([
  ["a", 1],
  ["b", 2],
  ["c", 3],
]);

for (let entry of iterable) {
  console.log(entry);
}
// [a, 1]
// [b, 2]
// [c, 3]

for (let [key, value] of iterable) {
  console.log(value);
}
// 1
// 2
// 3


/* set์— ๋Œ€ํ•ด ๋ฐ˜๋ณต */
let iterable = new Set([1, 1, 2, 2, 3, 3]);

for (let value of iterable) {
  console.log(value);
}
// 1
// 2
// 3

 

for...of ์™€ for...in ์˜ ์ฐจ์ด

for...in ๋ฃจํ”„๋Š” ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ด๊ฑฐ๊ฐ€๋Šฅํ•œ ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜์ง€๋งŒ
for...of ๊ตฌ๋ฌธ์€ ์ปฌ๋ ‰์…˜ ์ „์šฉ์ด๋‹ค. ๋ชจ๋“  ๊ฐ์ฒด๋ณด๋‹ค๋Š”, [Symbol.iterator] ์†์„ฑ์ด ์žˆ๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜ ์š”์†Œ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” for...of ๋ฃจํ”„์™€ for...in ๋ฃจํ”„์˜ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค.

Object.prototype.objCustom = function () {};
Array.prototype.arrCustom = function () {};

let iterable = [3, 5, 7];
iterable.foo = "hello";

for (let i in iterable) {
  console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}

for (let i of iterable) {
  console.log(i); // logs 3, 5, 7
}

 

์ฐธ๊ณ 

for...of - javaScript | MDN

'Frontend ๐Ÿ“š > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€  (0) 2024.07.06
[JS] parseInt() ์‚ฌ์šฉ ๋ฐฉ๋ฒ•  (0) 2023.11.30
[JS] Constructor(์ƒ์„ฑ์ž)๋ž€?  (0) 2023.11.28