Skip to content

JavaScript์˜ for each, for in, for of ๋น„๊ตย #1

@dididy

Description

@dididy

for each

for each ๊ตฌ๋ฌธ์€ array์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ์ž๋กœ callback ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ์™€ index์— ์ ‘๊ทผํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์„ฑ๋Šฅ์€ ์ข‹์ง€๋งŒ break์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. callback ํ•จ์ˆ˜์˜ return์ด true๋“  false๋“  ๋‘˜ ๋‹ค continue ์ฒ˜๋ฆฌ๋˜์–ด ๋ฃจํ”„๋ฅผ ์ „๋ถ€ ๋Œ๊ฒŒ ๋œ๋‹ค. for each ์ž์ฒด์˜ return์€ undefined์ด๋‹ค.

break์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด try, catch๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋” ์šฐ์•„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ for each ๋Œ€์‹ ์— every๋‚˜ some์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋‘ ๋ฉ”์„œ๋“œ ๋ชจ๋‘ for each์ฒ˜๋Ÿผ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ(์ฆ‰, callback ํ•จ์ˆ˜์— return ๊ฐ’์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ) ๋ฃจํ”„๋ฅผ ์ค‘์ง€ํ•˜๊ณ  every์˜ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ์ž์ฒด์—์„œ false๋ฅผ returnํ•˜๊ณ  some์˜ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ์ž์ฒด์—์„œ true๋ฅผ return ํ•œ๋‹ค.

for in

๊ฐ์ฒด์—์„œ ์ˆœํšŒ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. [[Enumerable]] ์ด true์ธ ๊ฒƒ๋งŒ ์ˆœํšŒํ•˜๊ฒŒ ๋˜์–ด์žˆ์–ด ๊ฐ์ฒด์˜ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋‚˜ ๋‚ด์žฅ ํ”„๋กœํผํ‹ฐ ๋“ฑ ๋น„์—ด๊ฑฐํ˜•์ธ ๊ฒฝ์šฐ์—๋Š” ์ˆœํšŒํ•˜์ง€ ์•Š๋Š”๋‹ค.

for of

for each์— ๋น„ํ•ด ๋А๋ฆฌ๋‹ค.(์‚ฌ์‹ค ํ”Œ๋žซํผ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค๊ณ  ํ•จ) ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด๊ฐ€ [Symbol.iterator] ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

index๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด entires ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

for (const [index, each] of ['a', 'b', 'c'].entries()) {
  console.log(index, each);
}

References

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions