๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐ŸŒˆ Chapter 4: ํŒจํ„ด์ด ์ข‹์€ ์ 

๐Ÿ“š ์‚ฌ๋ก€ ์—ฐ๊ตฌโ€‹

ํ›Œ๋ฅญํ•œ ๊ฐœ๋ฐœ์ž๋Š” ๊ฒฝํ—˜์œผ๋กœ ์ถ•์ ๋œ ํŒจํ„ด์—์„œ ์ง€์‹์„ ๋„์ง‘์–ด๋‚ด์–ด ๋ฌด์—‡์„ ์“ฐ๋ฉด ๋ ์ง€ ๋Š์ž„์—†์ด ๊ฒฐ์ •ํ•  ์ค„ ์•„๋Š” ์‚ฌ๋žŒ์ด์•ผ๋ง๋กœ ์ง„์ •ํ•œ ๊ณ ์ˆ˜๋‹ค. ์˜ˆ์ „์— ๊ฒช์€ ๊ฒธํ—˜๊ณผ ์ง€ํ˜œ๋ฅผ ์ž˜ ์‚ด๋ฆด ์ค„ ์•„๋Š” ์‚ฌ๋žŒ์€ใ…‡ ๋ชจ๋“  ๊ฑธ ํ•˜๋‚˜ํ•˜๋‚˜ ์ง์ ‘ ๋งŒ๋“ค๋ ค๊ณ  ์• ์“ฐ๋Š” ์‚ฌ๋žŒ๋ณด๋‹ค ๊ฒฝ์ œ์ ์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

ํŒจํ„ด์˜ ๋ฒ”์œ„๋Š” ์‚ฌ์†Œํ•œ ์›์–ด์˜ ๊ด€์šฉ ๊ตฌ๋ฌธ(++i)๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ(n-๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜)์— ์ด๋ฅผ ์ •๋„๋กœ ๋„“๋‹ค. ๋ฃจํ”„๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ๋„ ์ผ์ข…์˜ ํŒจํ„ด์ธ๋ฐ, ์ด ์žฅ์—์„œ ์˜ˆ์‹œํ•  ์ฝ”๋“œ๋งŒ ๋ณด๋”๋ผ๋„ ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์–ด๋–ป๊ฒŒ ํŒจํ„ด์ด ์Œ“์—ฌ ์ ์  ๋‚˜์€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ๋˜์—ˆ๋Š”์ง€, ํŒจํ„ด์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์–ผ๋งˆ๋‚˜ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ œ์ž๋ฆฌ๋ฅผ ์žก๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์•„์ฃผ ๋จผ ์˜›๋‚ , ์ตœ์ดˆ๋กœ ๋“ฑ์žฅํ•œ ๋ฐฐ์—ด ๋ฃจํ‘ธ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

ix = 0;
the_test;
if (ix >= myArray.length) {
goto the_end;
}

doSomething(myArray[ix]);
ix = ix + 1;
goto the_test; // ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— goto๋ฌธ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.
the_end:

goto ๋ฌธ์ด ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด ๋‚ด๋ ค๊ฐ€๊ธฐ ํž˜๋“ค์–ด์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒŒ ๋๋‹ค. ๋งˆ์นจ๋‚ด goto๋Š” ์‚ฌ์šฉ์ด ๊ธˆ์ง€๋˜์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ž์ทจ๋ฅผ ๊ฐ์ท„๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•œ ํŒจํ„ด์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” for ๋ฃจํ‘ธ๋ฌธ์ด ์–ธ์–ด์— ์žฅ์ฐฉ๋๋‹ค.

for(var ix = 0; ix < myArray.length; ++ix) {
doSomething(myArray[ix]);
}

ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋‹ค. ๊ฒฝํ—˜๊ณผ ํŒจํ„ด์ด ์ถ•์ ๋˜๋Š” ์ง€๊ธˆ๋„ ํ˜„์žฌ ์ง„ํ–‰ํ˜•์ด๋‹ค. ๋ฐฐ์—ด ์›์†Œ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฃจํ”„๋Š” ๋„ˆ๋ฌด ์ž์ฃผ ์“ฐ์ด๋Š” ์ฝ”๋“œ๋ผ์„œ ECMAScript5 ์–ธ์–ด ์„ค๊ณ„์ž๋“ค์€ ๋”์šฑ ๊ฐ„๊ฒฐํ•œ ๊ตฌ๋ฌธ์„ ๊ณ ์•ˆํ•ด๋ƒˆ๋‹ค.

myArray.forEach(doSomething);

์œ„ ์ฝ”๋“œ๋Š” ๊น”๋”ํ• ๋ฟ๋”๋Ÿฌ ๋ฏฟ์Œ์ด ๊ฐ€๋Š” ์ฝ”๋“œ๋‹ค. ์กฐ๊ฑด๋ฌธ์ด ์—†์œผ๋‹ˆ ํ•œ๋—์ฐจ์ด ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•  ๋ฆฌ ์—†๊ณ , ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†์œผ๋‹ˆ ์—‰๋šฑํ•œ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•  ์ผ๋„ ์—†๋‹ค. ๋ฌผ๋ก , forEach ๋ฌธ์„ ์ž˜ ๊ตฌ์‚ฌํ•  ์ค„ ์•Œ๊ณ  ์ฝœ๋ฐฑ์ด ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค. ๊ฒฐ๊ตญ, ํญ๋„“์€ ์–ดํœ˜๋ ฅ์„ ์†Œ์œ ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ์šฐ์•„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“š ์–ดํœ˜๋ ฅ์„ ๋Š˜๋ ค ๋” ๋ฉ‹์ง„ ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐโ€‹

๊ธฐ์ดˆ ๊ฐœ๋…๋งŒ์œผ๋กœ ๋‹ฌ์—ฌ๋‚ธ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ๋ง์€ ๋ฏธ์‹ ์ด๋‹ค. ์–ดํœ˜๋ ฅ์ด ๋–จ์–ด์ง€๋ฉด ์™ธ๋ ค ์žฅํ™ฉํ•˜๊ณ  ๋น„๋น„ ๊ผฌ์ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณ€์งˆ๋˜๊ธฐ ์‰ฝ๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ for์™€ forEach๋ฅผ ์‚ฌ์šฉํ•œ ๋ฃจํ‘ธ๋ฌธ์„ ์„œ๋กœ ๋น„๊ตํ•œ ํ‘œ๋‹ค.

forforEach
ํ• ๋‹นix=0, ++ixํ•ด๋‹น์—†์Œ
ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐmyArray.lengthํ•ด๋‹น ์—†์Œ
๋ฐฐ์—ด ์›์†Œ ์ฐธ์กฐmyArray[ix]ํ•ด๋‹น ์—†์Œ
์กฐ๊ฑด ๋ถ„๊ธฐix < myArray.lengthํ•ด๋‹น ์—†์Œ
ํ•จ์ˆ˜ ํ˜ธ์ถœdoSomething(myArray[ix])doSomething

๋ฐฐ์—ด ์›์†Œ ๊ฐ๊ฐ์— doSomething ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ผ์ด ์ฃผ๋ชฉ์ ์ธ๋ฐ, ํ• ๋‹น, ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ, ์กฐ๊ฑด ๋ถ„๊ธฐ ๋“ฑ ์žก๋‹คํ•œ ์ผ๋“ค์ด ๋ผ์–ด๋“ ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์“ฐ๋ ˆ๊ธฐ ๋”๋ฏธ์—์„œ ๋ฉ‹์ง„ ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ฌ ๋ฆฌ ์—†๋‹ค.

์–ธ์–ด์˜ ํŒจํ„ด์„ ๋‹ฌ์—ฌ ๋„ฃ์€ ์ž‘์€ ์‹ค๋ก€๋กœ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„์ด ๊ฐœ๋ฐœ ์ค‘์ธ ์ฝ”๋“œ ๋˜๋Š” ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋” ํฐ ๊ทœ๋ชจ์˜ ํŒจํ„ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ”„๋ผ๋ฏธ์Šค ํŒจํ„ด(6์žฅ)์€ ๋น„๋™๊ธฐ ์•ก์…˜์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์„ฑ๊ณต๊ณผ ์‹คํŒจ ์ผ€์ด์Šค๋ฅผ ๊ฐ๊ฐ ์ฒ˜๋ฆฌํ•  ์ฝœ๋ฐฑ์„ ์ค€๋‹ค. ํ”„๋ผ๋ฏธ์Šค๋ฅผ ๊นจ์šฐ์น˜๊ณ  ๋‚˜๋ฉด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์šฐ์•„ํ•˜๋ฉฐ ํƒ„ํƒ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ •๊ทœ ๊ต์œก์„ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐœ๋ฐœ์ž๋Š” ์žฅ์‹์ž ํŒจํ„ด(12์žฅ)์„ ์ƒ๊ฐ์กฐ์ฐจ ํ•˜๊ธฐ ์–ด๋ ต๊ฒ ์ง€๋งŒ, ์ด ํŒจํ„ด์„ ์“ฐ๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(1์žฅ)์„ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ๋ฏฟ์Œ์„ฑ์ด ๊ฐ•ํ™”๋œ ์ฝ”๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“š ์ž˜ ๋‹ค๋“ฌ๊ณ  ํ…Œ์ŠคํŠธํ•œ ๋ธ”๋ก์„ ์Œ“์•„ ๋ฏฟ์Œ์งํ•œ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐโ€‹

์ „์ฒด์ ์ธ ๊ด€์ ์—์„œ ๋ณด๋ฉด ํŒจํ„ด์€ ํ›„๋ฐ˜๋ถ€์— ๋ถˆ๊ณผํ•˜๋ฉฐ, ์ „๋ฐ˜๋ถ€์—์„œ๋Š” ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๊ฐ€ ์ž๋ฆฌํ•œ๋‹ค(๋ช…์‹ฌํ•˜๊ธธ, ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๊ฐ€ ๋จผ์ €๋‹ค). ์ง€๊ทนํžˆ ๊ฐ„๋‹จํ•œ ํŒจํ„ด์ด๋ผ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์œผ๋ฉด ์—‰๋ง์ด ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊ฒฝํ—˜์œผ๋กœ ํ„ฐ๋“ํ–ˆ๋‹ค. ํŒจํ„ด์ด ์ฝ”๋“œ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ž˜ ์˜ฎ๊ฒจ์ง€๋Š”์ง€๋Š” ์˜ค์ง ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตใ…‡ํ•ด ์žฅ๋‹ดํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋“ค์€ ๋Œ€๋ถ€๋ถ„ ํŒจํ„ด ์ž์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํŒจํ„ด์„ ์ด์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋นˆํ‹ˆ์—†์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ผ ์• ๋ฅผ ๋จน๋Š”๋‹ค.

๐Ÿ“š ์ •๋ฆฌํ•˜๊ธฐโ€‹

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์„ธ๊ณ„์—๋Š” ์–ธ์–ด ๋ฌธ๋ฒ•๊ณผ ๊ด€์šฉ ๊ตฌ๋ฌธ ๊ฐ™์€ ์†Œ๊ทœ๋ชจ ํŒจํ„ด๊ณผ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์ „๋ฐ˜์— ํ•„์š”ํ•œ ๋Œ€๊ทœ๋ชจ ํŒจํ„ด์ด ์žˆ๋‹ค. ์ฒด์Šค ๊ณ ์ˆ˜๊ฐ€ ๋ง์„ ์›€์ง์ผ ๋•Œ๋งˆ๋‹ค ์ต์ˆ™ํ•œ ํŒจํ„ด์— ์˜ํ•ด ์ˆ˜๋ฅผ ์ฝ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋…ธ๋ จํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋Š” ์ž์‹ ๋งŒ์˜ ํญ๋„“์€ ํŒจํ„ด ์–ดํœ˜๋ ฅ์„ ๋ณด์œ ํ•œ๋‹ค. ํŒจํ„ด์„ ์ด๋ ‡๊ฒŒ ์‚ฌ๊ณ ์˜ ์•ˆ๋‚ด์ž๋กœ ์‚ผ์•„ ํ…Œ์ŠคํŠธ๋ฅผ ์ถฉ๋ถ„ํžˆ ๊ฑฐ์นœ ๊ฒ€์ฆ๋œ ๋นŒ๋”ฉ ๋ธ”๋ก์„ ์Œ“์•„ ์˜ฌ๋ ค ๋ฏฟ์Œ์„ฑ ์žˆ๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.