potatos
๐•๐•’๐•ฆ๐•ฃ๐•ฆ๐•ค
potatos
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Daily
    • Study
      • CS
      • Network
      • Windows
      • Linux
      • HTML & CSS
      • JavaScript
      • React
      • vue.js
      • Flutter
      • DataBase
      • Elastic Se..
      • Log
      • Coding Tes..
    • Work
      • PC
      • Mobile
      • JPGIF

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • notice

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • MySQL
  • ์…€๋ ‰ํ„ฐ
  • ์ˆ˜์ง ์ •๋ ฌ
  • ์œˆ๋„์šฐ
  • JavaScript
  • Linux
  • CSS
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • Windows
  • HTML

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
potatos

๐•๐•’๐•ฆ๐•ฃ๐•ฆ๐•ค

Study/JavaScript

[JavaScript] ํ˜ธ์ด์ŠคํŒ…(Hoisting)

2022. 7. 8. 14:42

ํ˜ธ์ด์ŠคํŒ…

JavaScript์—์„œ ํ˜ธ์ด์ŠคํŒ…์ด๋ž€, ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์„ ์–ธํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „, ํ•จ์ˆ˜ ๋‚ด์—์„œ ํ•„์š”ํ•˜๋Š” ๋ณ€์ˆ˜ ๊ฐ’๋“ค์„ ํ•ด๋‹น ํ•จ์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„ ์ตœ์ƒ๋‹จ์— ์„ ์–ธํ•ด ์ค€๋‹ค.

๋ณดํ†ต, ๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋ถ„๋ฆฌํ•œ ํ›„, ์„ ์–ธ๋งŒ ์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์ฝ”๋“œ๋ณด๋‹ค ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•ž์„œ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์„ ์–ธ ์ฝ”๋“œ๊นŒ์ง€ ์‹คํ–‰ํ•ด์•ผ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋œ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

  • ์„ ์–ธ๋œ ํ•จ์ˆ˜๋Š” ์„ ์–ธ๋ฌธ ์ƒ๋‹จ์—์„œ ์ฐธ์กฐ, ํ˜ธ์ถœ ๊ฐ€๋Šฅ
  • ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜ ์„ ์–ธ๋ณด๋‹ค ์•ž์„œ ๋ฐฐ์น˜ ๊ฐ€๋Šฅ
  • ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•๊ณผ ๋ณ€์ˆ˜์—๋„ ์ž˜ ๋™์ž‘ํ•จ
  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์ „, ๋จผ์ € ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅ
function myName(name) {
	console.log(`์ œ ์ด๋ฆ„์€ ${name}์ž…๋‹ˆ๋‹ค.`); //์ œ ์ด๋ฆ„์€ ๊น€์ฒ ์ˆ˜์ž…๋‹ˆ๋‹ค.
}

myName("๊น€์ฒ ์ˆ˜");
myName("๊น€์ฒ ์ˆ˜");

function myName(name) {
	console.log(`์ œ ์ด๋ฆ„์€ ${name}์ž…๋‹ˆ๋‹ค.`); //์ œ ์ด๋ฆ„์€ ๊น€์ฒ ์ˆ˜์ž…๋‹ˆ๋‹ค.
}

๋ณ€์ˆ˜ ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ… ๋Œ€์ƒ

  • ์ดˆ๊ธฐํ™”๋ฅผ ์ œ์™ธํ•œ ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ…
    • ๋ณ€์ˆ˜์˜ ์ƒํƒœ ์„ธ ๋‹จ๊ณ„
      1. ์„ ์–ธ: ๋ณ€์ˆ˜ ๊ฐ์ฒด๊ฐ€ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์‹๋ณ„์ž๋“ค์„ ์ˆ˜์ง‘
      2. ์ดˆ๊ธฐํ™”: ์„ ์–ธํ•œ ๊ตฌ๋ฌธ์—์„œ ์ผ์–ด๋‚˜๋ฉฐ, ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
      3. ํ• ๋‹น: ๋ณ€์ˆ˜ ์•ˆ์— ๊ฐ’์„ ์ €์žฅ
  • ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์‚ฌ์šฉ ํ›„, ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์‚ฌ์šฉํ•˜๋Š” ์‹œ์ ์˜ ๋ณ€์ˆ˜๊ฐ€ ๊ธฐ๋ณธ ์ดˆ๊ธฐํ™” ์ƒํƒœ
    • var ์„ ์–ธ ์‹œ, undefined์ด๊ณ  ๊ทธ ์™ธ์—๋Š” ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์Œ
      • var๋กœ ์„ ์–ธ ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๋ฌธ ์ƒ๋‹จ์—์„œ ์ฐธ์กฐ, ํ• ๋‹น ๊ฐ€๋Šฅ 
      • 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
    'Study/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JavaScript] MVC / MVP / MVVM ํŒจํ„ด
    • [JavaScript] ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Singleton Pattern)
    • [JavaScript] ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ
    • [JavaScript] ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๋™์ž‘ ์›๋ฆฌ
    potatos
    potatos

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”