๋ชฉ์ฐจ
ํธ์ด์คํ ์ด์
Hoisting = ๋์ด์ฌ๋ฆฐ๋ค
์ผ๋ฐ์ ์ธ ์ธ์ด = ํจ์, ๋ณ์๋ฅผ ์ ์ธ ํ ์ฌ์ฉ์ด ๊ฐ๋ฅ
JS = ์ ์ธ ์ ์ ์ฌ์ฉ์ ํด๋ ์๋ฌ๋ฅผ ๋ด์ง ์๋๋ค...!
์์
1. var ํค์๋
var์ let๊ณผ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธ์ ์ฐ์ด๋ ํค์๋์ด๋ค.
ํ์ง๋ง ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ฅผ ์ฌ์ ์ธํด๋ ์ค๋ฅ๊ฐ ๋์ง ์๋๋ค.
var a = 1;
var a = 2;
console.log(a)
>>>
2
======================
let a = 1;
let a = 2;
console.log(a)
>>>
SyntaxError: Identifier 'a' has already been declared
ํธ์ด์คํ ์ด ์ผ์ด๋๋ ์์
console.log(a)
a = 10;
console.log(a)
var a = 1
console.log(a)
>>>
undefined
10
1
2. ํจ์
showData();
function showData() {
console.log("Hello")
}
>>>
Hello
ํจ์์ ๊ฒฝ์ฐ ์ญ์
์ ์ธ ์ ์ ํธ์ถ์ ํด๋
์ค๋ฅ๊ฐ ๋์ง ์๋๋ค.
Hoisting ์ด์
JS๋ ํ์ผ์ ์ปดํ์ผํ ๋
๋ค์์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
1. var๋ก ์ ์ธ๋ ๋ณ์๊ฐ ์๋์ง ํ์ธ
2. ํจ์๊ฐ ์๋์ง
3. 1-2๋ฒ์ ํด๋น๋๋ ๊ฒ๋ค์ ์ต์๋จ๋ถ์์ ๋จผ์ ์ ์ธ์ ํ๋ค.
4. ์ ์ฒด ์ฝ๋ ์คํ
์ด๋ ์๋จ๋ถ์์ ์ ์ธ์ ํ ๋๋ ์ด๊ธฐํ๋ ๋์ง ์์ ์ํ์ด๋ค.
๋ฌธ์ ์
์์ ์ด ์๋ํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
(์์ธํ ๊ฒ์ ๋์ค์!)
Hoisting ํด๊ฒฐ๋ฒ
1. ๋ณ์ ์ ์ธ
let, const๋ฅผ ์ด์ฉํ๋ค.
2. ํจ์ ์ ์ธ
ํจ์ ํํ์์ ์ด์ฉํ๋ค!
// ํจ์ ํํ์
let getData = function() {
console.log("Hello")
}
// ํจ์ ์ ์ธ๋ฌธ
function getData() {
console.log("Hello")
}
ํจ์ ํํ์์ ๊ฒฝ์ฐ
let, const๋ก ๋ณ์๋ฅผ ์ ์ธํ ๋ค
๊ทธ๊ณณ์ ํ ๋น์ ํ๋ ๊ฒ์ด๋ฏ๋ก
๋ณ์๋ก ์ธ์ง๋ฅผ ํ๋ค.
๋ฐ๋ผ์ ์ ์ธ์ด ํธ์ถ๋ณด๋ค ๋ค์ ์ค๋ฉด
์ค๋ฅ๊ฐ ๋ฐ์์ ํ๋ค.
'๐ | WEB DEV > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS_๋ฌธ๋ฒ (5)_๋๊ธฐ/๋น๋๊ธฐ ์ฒ๋ฆฌ (0) | 2022.02.18 |
---|---|
JS_๋ฌธ๋ฒ (4)_Scope (0) | 2022.02.17 |
JS_๋ฌธ๋ฒ (2)_๊ตฌ์กฐ ๋ถํด ํ ๋น2, Rest-Spread ํ๋ผ๋ฏธํฐ (0) | 2022.02.15 |
JS_๋ฌธ๋ฒ (1)_์ผํญ์ฐ์ฐ์, ๊ตฌ์กฐ๋ถํด ํ ๋น1 (0) | 2022.02.15 |
JS_๊ธฐ๋ณธ๋ฌธ๋ฒ (6)_๋ฐฐ์ด 2 (๊ด๋ จ ํจ์) (0) | 2022.02.15 |
๋๊ธ