๐ปํธ์ด์คํ , hoisting๐ป
ํธ์ด์คํ ์๋ ๋ณ์ ํธ์ด์คํ ๊ณผ ํจ์ ํธ์ด์คํ ์ด ์๋๋ฐ ํธ์ด์คํ ์ด๋ผ๊ณ ํ๋ฉด ๋ณดํต ํจ์ ํธ์ด์คํ ์ ์๋ฏธํ๋ค.
ํจ์ ํธ์ด์คํ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ธฐ ์ ์, ๋ณ์/ํจ์ ์ ์ธ๋ฌธ์ ํด๋น ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ฆฐ๋ค.(์ฝ๋ ์ฌ๋ฐฐ์น)
<script>
function m1() {
alert('m1');
}
m1();
m2(); //ํจ์ ์์ฑํ๊ธฐ ์ ์ ํธ์ถ
function m2() {
alert('m2');
}
</script>
ํจ์ m2๋ฅผ ์ ์ํ๊ธฐ ์ ์ ํธ์ถ์ ๋จผ์ ํ์ง๋ง ์๋ฌ๋์ง์๊ณ 'm1', 'm2'๊ฐ ์ ๋๋ก ์คํ๋๋ค.
์ด๋ฐ๊ฒ์ ํจ์ ํธ์ด์คํ ์ด ๋ฐ์ํ๋ค๊ณ ํ๋ค.
๋ณ์ ํธ์ด์คํ
๋ณ์ ์ ์ธ์ ํ์ฌ ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ฆฌ๋ ํ์์ด๋ค. ๋ฌ๋ ๋ณ์์ ์ด๊ธฐํ๋ ํธ์ด์คํ ๋์ง ์๋๋ค.
์๋๋ผ๋ฉด 'not defined variable a' ๋ผ๊ณ ์๋ฌ๊ฐ ๋ฐ์
<script>
function m3() {
alert(a);
var a = 10; //not defined variable a
}
m3();
</script>
a๋ฅผ ์ ์ธํ๊ธฐ ์ ์ alert์ผ๋ก a๋ฅผ ํธ์ถํ๋ค.
<script>
function m3() {
var a
alert(a);
a = 10;
}
m3();
</script>
<script>
function m4() {
alert(b);
let b = 20; //Cannot access 'b' before initialization
}
m4();
</script>
ํธ์ด์คํ ์ ๋ฐ์ํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ์๋ฌ๋ฅผ ๋ด์๋ก ํฉ์๋ฅผ ํ๋ค.
'WEB > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํจ์๋ 1๊ธ ๊ฐ์ฒด์ด๋ค. (0) | 2023.10.11 |
---|---|
[JavaScript] object (0) | 2023.10.11 |
[JavaScript] ๋ณ์ ์ ์ธํ๊ธฐ(var, let, const) (0) | 2023.10.11 |
[JavaScript] DOM - ๋์ ์ผ๋ก ํ๊ทธ ์์ฑํ๊ธฐ (0) | 2023.10.10 |
[JavaScript] DOM - event ๋ฑ๋ก ๋ฐ ์ญ์ (0) | 2023.10.10 |