
์ด์ ๊ธ์์ ๊ฐ์ฒด๋ ๋ฌด์์ธ์ง ์ดํด๋ณด์๋ค.
JavaScript์ data type์, primitive type๊ณผ object type.
์ฆ ์์ ํ์
๊ณผ ๊ฐ์ฒด ํ์
์ผ๋ก ๋๋๋ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ , ๊ทธ๋ฌ๋๊น ์์๊ฐ๊ณผ ๊ฐ์ฒด๋ผ๋ ๊ฐ๋ ์ฌ์ด์๋ ์ด๋ค ์ฐจ์ด์ ์ด ์์๊น?
์ด ๊ธ์์๋ ๋ฐ๋ก ๋ชฉ์ฐจ๋ฅผ ๋์ง ์๊ณ , ํ๋ฆ์ ๋ฐ๋ผ ์์๊ฐ๊ณผ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ฉฐ ์์๋ณด๊ฒ ๋ค.
์ฐ์ , ์์๊ฐ์ immutableํ, ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ฐ์ด๋ค.
์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ๊ฐ์ด๊ธฐ ๋๋ฌธ์, ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ์ด ๋ณด์ฅ๋๋ค.
์ด ๋ฌธ์์ด ํ์
์ ์์ ํ์
์ด๊ณ , ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ด๋ค.
(๋ฌธ์์ด์ด ์์ฑ๋ ์ดํ ๋ณ๊ฒฝํ ์ ์๋ค.)
index๋ก property ๊ฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ณ , length property๋ฅผ ๊ฐ๋ ๊ฐ์ฒด์ด๋ค.
์ด๊ฒ์ด JavaScript์ ์ฅ์ ์ด๋ผ๊ณ ํ๋ค..!
๊ฐ์ฒด์ ๊ฒฝ์ฐ, property๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๊ณ , ๋ ์ญ์ ํ ์ ์์ด์ผ ํ๋ค.
๋๋ฌธ์ ํ๋ณดํด์ผํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ฌ์ ์ ์ ํด๋ ์๊ฐ ์๋ค.
์์๊ฐ์ ์๊ฐํด๋ณด๋ฉด, ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ง๋ค ์ด์ ๊ฐ์ ๋ณต์ฌํด์, ์๋ก ์์ฑํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์ฒด์ ๊ฒฝ์ฐ, ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ํฌ๊ธฐ๋ ํ๊ณ , ํด๋น ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋งค์ฐ ๋จ์ด์ง๋ ๋จ์ ์ด ์๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, JavaScript์์๋ ์ด๋ค ์ ํ์ ํ์๊น?
์ฌ๋ฌ ๊ฐ์ ์๋ณ์๊ฐ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ ์ ์๊ฒ ๋ง๋ค์๋ค.
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํน์ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๋ฉด, ์๋ณธ์ ์ฐธ์กฐ๊ฐ์ด ๋ณต์ฌ๋๋๋ก ํ๋ค.
์ ์ฅ๋ ์ฃผ์๋ฅผ ๋ค๋ฅด์ง๋ง, ๋์ผํ ์ฐธ์กฐ๊ฐ์ ๊ฐ๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ ์ค ํ๋๋ฅผ ๋ณ๊ฒฝํด๋, ์๋ก ์ํฅ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
์์ํ์ ๊ณผ ๊ฐ์ฒดํ์ ์ ํ ๋น ๋ฐฉ์์ ๊ฐ๊ฐ pass by value, pass by reference ๋ผ๊ณ ์ค๋ช ํ๊ธฐ๋ ํ๋ค.
๋ ๋ฐฉ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋ ๊ฐ์ ๋ณต์ฌํ๊ณ ์ ๋ฌํ๋ค๋ ์ ์ ์์ด์๋ ๊ฐ๋ค.
์ฐจ์ด๋ '์๋ณ์๊ฐ ๊ธฐ์ตํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฌด์์ด ๋ค์ด์๋๋' ์ด๋ค.
์ฆ, ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ด ์์๊ฐ์ด๋ ์ฐธ์กฐ๊ฐ์ด๋์ ์ฐจ์ด๋ผ๋ ๊ฒ์ด๋ค.
์ฌ์ค ์์ํ์ ๊ณผ ๊ฐ์ฒดํ์ ์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ ๋ค๋ฃจ๋ ๋ด์ฉ์ด์ด์, ์ด๋ ต๊ฑฐ๋ ๋ณต์กํ์ง๋ ์์๊ณ , ๋ง์ ๋ด์ฉ์ ๋ค๋ฃจ๋ ๊ธ๋ ์๋์๋ ๊ฒ ๊ฐ๋ค.
์์ํ์ ๊ณผ ๊ฐ์ฒดํ์ ์ ํ ๋น, ๊ทธ๋ฆฌ๊ณ ๋ ํ์ ๋ณ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ ์ฐจ์ด๋ง ์ดํดํด๋ ํด๋น ๋ด์ฉ์ ๋ค ์ดํดํ๋ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ ๋ค.