ํธ์ด์คํ
JavaScript์์ ํธ์ด์คํ ์ด๋, ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํจ์๊ฐ ์คํ๋๊ธฐ ์ , ํจ์ ๋ด์์ ํ์ํ๋ ๋ณ์ ๊ฐ๋ค์ ํด๋น ํจ์์ ์ ํจ ๋ฒ์ ์ต์๋จ์ ์ ์ธํด ์ค๋ค.
๋ณดํต, ๋ณ์์ ์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ๋ถ๋ฆฌํ ํ, ์ ์ธ๋ง ์ฝ๋์ ์ต์๋จ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด๋ผ๊ณ ๋งํ๋ค. ๋ณ์๋ฅผ ์ ์ํ๋ ์ฝ๋๋ณด๋ค ์ฌ์ฉํ๋ ์ฝ๋๊ฐ ์์ ๋ฑ์ฅํ ์ ์๋ค.
์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ํจ๊ป ์ํํ๋ ๊ฒฝ์ฐ, ์ ์ธ ์ฝ๋๊น์ง ์คํํด์ผ ๋ณ์๊ฐ ์ด๊ธฐํ๋ ์ํ๊ฐ ๋๋ค๋ ์ ์ ์ฃผ์ํด์ผ ํ๋ค.
ํจ์ ์ ์ธ์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
- ์ ์ธ๋ ํจ์๋ ์ ์ธ๋ฌธ ์๋จ์์ ์ฐธ์กฐ, ํธ์ถ ๊ฐ๋ฅ
- ํจ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ํจ์ ์ ์ธ๋ณด๋ค ์์ ๋ฐฐ์น ๊ฐ๋ฅ
- ๋ค๋ฅธ ์๋ฃํ๊ณผ ๋ณ์์๋ ์ ๋์ํจ
- ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ , ๋จผ์ ์ด๊ธฐํํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅ
function myName(name) {
console.log(`์ ์ด๋ฆ์ ${name}์
๋๋ค.`); //์ ์ด๋ฆ์ ๊น์ฒ ์์
๋๋ค.
}
myName("๊น์ฒ ์");
myName("๊น์ฒ ์");
function myName(name) {
console.log(`์ ์ด๋ฆ์ ${name}์
๋๋ค.`); //์ ์ด๋ฆ์ ๊น์ฒ ์์
๋๋ค.
}
๋ณ์ ์ ์ธ๋ง ํธ์ด์คํ ๋์
- ์ด๊ธฐํ๋ฅผ ์ ์ธํ ์ ์ธ๋ง ํธ์ด์คํ
- ๋ณ์์ ์ํ ์ธ ๋จ๊ณ
- ์ ์ธ: ๋ณ์ ๊ฐ์ฒด๊ฐ ๋ณ์์ ๋ํ ์๋ณ์๋ค์ ์์ง
- ์ด๊ธฐํ: ์ ์ธํ ๊ตฌ๋ฌธ์์ ์ผ์ด๋๋ฉฐ, ๋ณ์์ ๊ฐ์ ํ ๋นํ๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํจ
- ํ ๋น: ๋ณ์ ์์ ๊ฐ์ ์ ์ฅ
- ๋ณ์์ ์ํ ์ธ ๋จ๊ณ
- ๋ณ์๋ฅผ ๋จผ์ ์ฌ์ฉ ํ, ์ ์ธ ๋ฐ ์ด๊ธฐํ๊ฐ ๋ํ๋๋ฉด ์ฌ์ฉํ๋ ์์ ์ ๋ณ์๊ฐ ๊ธฐ๋ณธ ์ด๊ธฐํ ์ํ
- var ์ ์ธ ์, undefined์ด๊ณ ๊ทธ ์ธ์๋ ์ด๊ธฐํ๋์ง ์์
- var๋ก ์ ์ธ ๋ ๋ณ์๋ ์ ์ธ๋ฌธ ์๋จ์์ ์ฐธ์กฐ, ํ ๋น ๊ฐ๋ฅ
- var๋ก ์ ์ธํ ๋ณ์์ ๊ฒฝ์ฐ, ํธ์ด์คํ ์ ํ๋ฉด undefined๋ก ๋ณ์๋ฅผ ์ด๊ธฐํ
- var ์ ์ธ ์, undefined์ด๊ณ ๊ทธ ์ธ์๋ ์ด๊ธฐํ๋์ง ์์
/** 1 **/
console.log(num); // undefined
var num; //์ ์ธ
num = 6; //์ด๊ธฐํ
/** 2 **/
console.log(num) // ReferenceError
num = 6; //์ด๊ธฐํ
/** 1) y๋ง ํธ์ด์คํ
๋์์ด ๋๋ ๊ฒฝ์ฐ **/
x = 1; // ์ด๊ธฐํ๋ง ์ผ์ด๋ฌ์ผ๋ฏ๋ก ํธ์ด์คํ
์ด ๋์ง ์์
console.log(x, y); // 1 undefined
// JS๋ ์ ์ธ๋ง ํธ์ด์คํ
ํ๋ฏ๋ก, ์์ค์ y๋ undefined
var y = 6; // y ์ ์ธ ํ ์ด๊ธฐํ
/** 2) ํธ์ด์คํ
์ ์์ง๋ง ๋ณ์ ์ด๊ธฐํ๋ ๋ณ์ ์ ์ธ๊น์ง ๋ณํํ๋ฏ๋ก ๋ณ์ ์ฌ์ฉ ๊ฐ๋ฅ**/
x = 1;
y = 6;
console.log(x, y); // 1 6
let๊ณผ const ํธ์ด์คํ
- let๊ณผ const๋ก ์ ์ธํ ๋ณ์๋ ์ฌ๋จ์์ ์ฐธ์กฐ, ํ ๋น ๋ถ๊ฐ๋ฅ
- let๊ณผ const๋ก ์ ์ธํ ๋ณ์์ ๊ฒฝ์ฐ์๋ ํธ์ด์คํ
์, ๋ณ์๋ฅผ ์ด๊ธฐํํ์ง ์์
- const์ ๊ฒฝ์ฐ, ์ ์ธ๋ง ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅ
- ๋ณ์์ ์ด๊ธฐํ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ฝ๋ ์ฝ๋๊ฐ ๋จผ์ ๋ํ๋๋ฉด ์์ธ ๋ฐ์
- ์ ์ธ ์ด์ ์ ์ฌ์ฉํ๋ ค ํ๋ฉด ์๋ฌ ๋ฐ์
x = 1;
console.log(x, y); // ์๋ฌ ๋ฐ์
let y = 6;
์ฐธ๊ณ : https://developer.mozilla.org/ko/docs/Glossary/Hoisting
'Study > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] MVC / MVP / MVVM ํจํด (0) | 2022.07.08 |
---|---|
[JavaScript] ์ฑ๊ธํค ํจํด(Singleton Pattern) (0) | 2022.07.08 |
[JavaScript] ๋ธ๋ผ์ฐ์ ์ ์ฅ์ (0) | 2022.07.08 |
[JavaScript] ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๋์ ์๋ฆฌ (0) | 2022.07.08 |
[JavaScript] JSON (0) | 2022.05.02 |