2023. 12. 4. 12:37ใfront-end/JavaScript
๐ ํธ์ด์คํ (Hoisting): ๋์ด ์ฌ๋ฆฌ๋ค. ๊ฒ์ํ๋ค.
ํธ์ด์คํ
์ ๋์ด ์ฌ๋ฆฐ๋ค๋ ๋ป์ ๊ฐ๊ณ ์๋ค.
JavaScript ์์ ํธ์ด์คํ
์ ๋ฌด์์ ์๋ฏธํ ๊น?
์ฐ์ ์๋ ์ฝ๋๋ฅผ ์ดํด๋ณด์.
console.log(score); // ๋ณ์ ์ฐธ์กฐ
var score; // ๋ณ์ ์ ์ธ๋ฌธ
๋ณ์ ์ ์ธ๋ฌธ ๋ณด๋ค ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ์ฝ๋๊ฐ ์์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ธํฐํ๋ฆฌํฐ์ ์ํด ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฏ๋ก console.log ๊ฐ ๊ฐ์ฅ ๋จผ์ ์คํ๋ ๊ฒ์ด๋ค.
์ฐธ์กฐ์๋ฌ ReferenceError ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์ํ์ง๋ง,
undefined๊ฐ ์ถ๋ ฅ๋๋ค.
๊ทธ ์ด์ ๋ ๋ณ์ ์ ์ธ์ด ์์ค์ฝ๋๊ฐ ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ์์ ๋ฐํ์ runtime์ด ์๋๋ผ ๊ทธ ์ด์ ๋จ๊ณ์์ ๋จผ์ ์คํ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ณ์ ์ ์ธ์ ์์ค์ฝ๋์ ์ด๋์ ์๋ ์๊ด์์ด ๋ค๋ฅธ ์ฝ๋๋ณด๋ค ๊ฐ์ฅ ๋จผ์ ์คํ๋๋ค.
๋ณ์ ์ ์ธ๋ฌธ์ด ์ฝ๋์ ์ ๋๋ก ๋์ด ์ฌ๋ ค์ง ๊ฒ์ฒ๋ผ ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ณ ์ ์ ํน์ง์ ๋ณ์ ํธ์ด์คํ
(variable hoisting)์ด๋ผ ํ๋ค.
์ค์ ๋ก ๋์ด์ฌ๋ ค์ง ๊ฒ์ด ์๋๋ผ ๋ณ์ ์ ์ธ์ ๊ฐ์ฅ ๋จผ์ ์คํํ๊ธฐ ๋๋ฌธ์ ๋ง์น ๋์ฌ์ฌ๋ ค์ง ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
์ถ์ฒ: ์ด์ ๋ชจ, ๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive, ์ํค๋ถ์ค(2020), p42-43.