๐ 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๋ฅผ ์ฌ์ฉํ ๋ฃจํธ๋ฌธ์ ์๋ก ๋น๊ตํ ํ๋ค.
for | forEach | |
---|---|---|
ํ ๋น | ix=0 , ++ix | ํด๋น์์ |
ํ๋กํผํฐ ์ฐธ์กฐ | myArray.length | ํด๋น ์์ |
๋ฐฐ์ด ์์ ์ฐธ์กฐ | myArray[ix] | ํด๋น ์์ |
์กฐ๊ฑด ๋ถ๊ธฐ | ix < myArray.length | ํด๋น ์์ |
ํจ์ ํธ์ถ | doSomething(myArray[ix]) | doSomething |
๋ฐฐ์ด ์์ ๊ฐ๊ฐ์ doSomething
ํจ์๋ฅผ ํธ์ถํ๋ ์ผ์ด ์ฃผ๋ชฉ์ ์ธ๋ฐ, ํ ๋น, ํ๋กํผํฐ ์ฐธ์กฐ, ์กฐ๊ฑด ๋ถ๊ธฐ ๋ฑ ์ก๋คํ ์ผ๋ค์ด ๋ผ์ด๋ ๋ค. ๋ถํ์ํ ์ฐ๋ ๊ธฐ ๋๋ฏธ์์ ๋ฉ์ง ์ฝ๋๊ฐ ๋์ฌ ๋ฆฌ ์๋ค.
์ธ์ด์ ํจํด์ ๋ฌ์ฌ ๋ฃ์ ์์ ์ค๋ก๋ก ์ธ๊ธํ์ง๋ง, ์ฌ๋ฌ๋ถ์ด ๊ฐ๋ฐ ์ค์ธ ์ฝ๋ ๋๋ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ณผ ์ ์๋ ๋ ํฐ ๊ท๋ชจ์ ํจํด๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- ํ๋ผ๋ฏธ์ค ํจํด(6์ฅ)์ ๋น๋๊ธฐ ์ก์ ์ ์ด๊ธฐํํ๊ณ ์ฑ๊ณต๊ณผ ์คํจ ์ผ์ด์ค๋ฅผ ๊ฐ๊ฐ ์ฒ๋ฆฌํ ์ฝ๋ฐฑ์ ์ค๋ค. ํ๋ผ๋ฏธ์ค๋ฅผ ๊นจ์ฐ์น๊ณ ๋๋ฉด ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ๋ณด๋ค ํจ์ฌ ๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ฐ์ํ๋ฉฐ ํํํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
- ์ ๊ท ๊ต์ก์ ๋ฐ์ง ๋ชปํ ๊ฐ๋ฐ์๋ ์ฅ์์ ํจํด(12์ฅ)์ ์๊ฐ์กฐ์ฐจ ํ๊ธฐ ์ด๋ ต๊ฒ ์ง๋ง, ์ด ํจํด์ ์ฐ๋ฉด ๋จ์ผ ์ฑ ์ ์์น(1์ฅ)์ ์ค์ํ๋ฉด์ ๋ฏฟ์์ฑ์ด ๊ฐํ๋ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
๐ ์ ๋ค๋ฌ๊ณ ํ ์คํธํ ๋ธ๋ก์ ์์ ๋ฏฟ์์งํ ์ฝ๋ ์์ฑํ๊ธฐโ
์ ์ฒด์ ์ธ ๊ด์ ์์ ๋ณด๋ฉด ํจํด์ ํ๋ฐ๋ถ์ ๋ถ๊ณผํ๋ฉฐ, ์ ๋ฐ๋ถ์์๋ ํญ์ ํ ์คํธ๊ฐ ์๋ฆฌํ๋ค(๋ช ์ฌํ๊ธธ, ํญ์ ํ ์คํธ๊ฐ ๋จผ์ ๋ค). ์ง๊ทนํ ๊ฐ๋จํ ํจํด์ด๋ผ๋ ํ ์คํธ๋ฅผ ๊ฑฐ์น์ง ์์ผ๋ฉด ์๋ง์ด ๋๋ค๋ ์ฌ์ค์ ๊ฒฝํ์ผ๋ก ํฐ๋ํ๋ค. ํจํด์ด ์ฝ๋๋ก ์ ํํ๊ฒ ์ ์ฎ๊ฒจ์ง๋์ง๋ ์ค์ง ํ ์คํธ๋ฅผ ํตใ ํด ์ฅ๋ดํ ์ ์๋ค.
๊ฐ๋ฐ์๋ค์ ๋๋ถ๋ถ ํจํด ์์ฒด๋ฅผ ์ด์ฉํด์ ์ฝ๋ฉํ๋ ๊ฒ๋ณด๋ค ํจํด์ ์ด์ฉํ ์ฝ๋๋ฅผ ๋นํ์์ด ํ ์คํธํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ ์ ๋ฅผ ๋จน๋๋ค.