ํธ์ด์คํ (hoisting)
๐ ํธ์ด์คํ (hoisting)
- ์ ์: ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์๋ณ์๋ค์ ์ต์์ผ๋ก ๋์ด์ฌ๋ฆฌ๋ ๊ฒ
โญ ๊ท์น
- ๋ณ์๋ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ฆฐ๋ค.
- ํจ์ ์ ์ธ์ ์ ์ฒด๋ฅผ ๋์ด์ฌ๋ฆฐ๋ค.
- ํจ์ ํํ์์ ํ ๋น๋ ๋ณ์ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ฆฐ๋ค.
- let์ ์ด์ฉํ ํธ์ด์คํ ์ ๋ถ๊ฐ๋ฅํ๋ค.
hello2(); // ํจ์ ํธ์ถ
function hello2() {
//ํจ์ ์ ์ธ
console.log("hello2");
}
ํจ์๋ฟ๋ง ์๋๋ผ varํค์๋๋ฅผ ํตํ ํธ์ด์คํ ๋ ๊ฐ๋ฅํฉ๋๋ค.
age = 6;
age++;
console.log(age);
var age;
์ฃผ์ํ ์
var๋ก ๋ณ์๋ฅผ ์ ์ธํจ๊ณผ ๋์์ ๊ฐ์ ์ง์ ํ๋ค๋ฉด, ๊ฐ์ ์ ์ธํ ์ ์ธ๋ง ํธ์ด์คํ ๋ฉ๋๋ค.
console.log(name);
name = "Mark";
console.log(name);
var name = "Sujin";
๊ฒฐ๊ณผ
์ด๋ ๊ฒ ํธ์ด์คํ
๋์ด ๋จผ์ ์ถ๋ ฅ๋ name์ ๊ฐ์ ์ ์ธํ ์ ์ธ๋ง ๋์ด์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์
undifined
๋ผ๊ณ ์ถ๋ ฅ๋ฉ๋๋ค.
ํจ์๋ฅผ ์ ์ธํ์ ๋๋ ํจ์ ์ ์ฒด๋ฅผ ๋์ด์ฌ๋ฆฝ๋๋ค.
function a() {
var b; // ์์ง ๋์ 1. ๋ณ์๋ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ฆฝ๋๋ค.
function b() {} // ์์ง ๋์ 2. ํจ์ ์ ์ธ์ ์ ์ฒด๋ฅผ ๋์ด์ฌ๋ฆฝ๋๋ค.
console.log(b);
b = "bbb";
console.log(b);
console.log(b);
}
a();
๊ฒฐ๊ณผ
[Function: b]
bbb
bbb
๋ง์ฝ ํจ์ ํํ์์ ์ด์ฉํด์ ํจ์๋ฅผ ์ ์ธํ๋ค๋ฉด, ์ ์ฒด๊ฐ ์๋ ๋ณ์ ์ ์ธ๋ถ๋ง ๋์ด์ฌ๋ฆฝ๋๋ค.
๐ let์ ์ด์ฉํ ํธ์ด์คํ ์ ๋ถ๊ฐ๋ฅ!
let
์ ์ด์ฉํ ํธ์ด์คํ
์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
let
์ ๋ฌด์กฐ๊ฑด ์ ์ธ์ด ์ฐ์ ์ ๋์ด์ผ ํฉ๋๋ค.
console.log(name);
name = "MARK";
console.log(name);
let name;
๊ฒฐ๊ณผ
์ถ์ฒ
- ํจ์คํธ์บ ํผ์ค ํ๋ก ํธ์๋ ๊ฐ์
- ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ
๐ฌ ์ต์ ๋๊ธ