wam
w__am κ°œλ°œλ…ΈνŠΈ
wam
  • λΆ„λ₯˜ 전체보기 (165)
    • CS 지식 (10)
      • 자료ꡬ쑰 (0)
      • μ•Œκ³ λ¦¬μ¦˜ (0)
      • 컴퓨터 ꡬ쑰 (0)
      • 운영체제 (0)
      • λ„€νŠΈμ›Œν¬ (7)
      • λ°μ΄ν„°λ² μ΄μŠ€ (0)
      • λ””μžμΈ νŒ¨ν„΄ (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT 지식 (8)
      • ν΄λΌμš°λ“œ μ„œλΉ„μŠ€ (3)
      • λ„€νŠΈμ›Œν¬ (1)
      • 데이터 포맷 (2)
      • 기타 (2)
    • IT Book (2)
    • μœ μš©ν•œ μ‚¬μ΄νŠΈ (1)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝
  • 🐱 Github

인기 κΈ€

νƒœκ·Έ

  • isabstract
  • μ›ν˜•μ μΈ μ›€μ§μž„
  • ν•¨μˆ˜ μ„ μ–Έλ¬Έ
  • μ˜€ν”„-ν”„λ ˆλ―ΈμŠ€(off-premise) 방식
  • API
  • ν•¨μˆ˜ ν‘œν˜„μ‹
  • reactive variables
  • threejs 개발 ν•  λ•Œ 도움을 쀄 수 μžˆλŠ” μœ ν‹Έλ¦¬ν‹°
  • math.sin()
  • getelapsedtime()
  • joi μ—λŸ¬
  • 데이터 포맷
  • Interface
  • axeshelper
  • Decorators
  • getdelta()
  • μ‚Όκ°ν•¨μˆ˜
  • ν•¨μˆ˜μ˜ λ²”μœ„
  • λ Œλ”λ§ μ„±λŠ₯ μ΅œμ ν™”
  • react μ„±λŠ₯ μ΅œμ ν™”
  • λ””μžμΈ νŒ¨ν„΄
  • math.cos()
  • μŠ€μ½”ν”„
  • type-graphql
  • mapped types
  • e.preventdefault()
  • gridhelper
  • ν•¨μˆ˜ λ¦¬ν„°λŸ΄
  • three.js ꡬ성 μš”μ†Œ
  • 초기 ν™˜κ²½μ„€μ •

졜근 κΈ€

κ΄€λ¦¬μž

κΈ€μ“°κΈ° / μŠ€ν‚¨νŽΈμ§‘ / κ΄€λ¦¬μžνŽ˜μ΄μ§€
hELLO Β· Designed By μ •μƒμš°.
wam

w__am κ°œλ°œλ…ΈνŠΈ

ν˜Έμ΄μŠ€νŒ…(hoisting)
Frontend/JavaScript

ν˜Έμ΄μŠ€νŒ…(hoisting)

2024. 3. 5. 18:13
πŸ’‘ν˜Έμ΄μŠ€νŒ… - JavaScript 엔진이 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 λ³€μˆ˜ 및 ν•¨μˆ˜ 선언을 λ©”λͺ¨λ¦¬μ— λŒμ–΄μ˜¬λ¦¬λŠ” 것

 

ν˜Έμ΄μŠ€νŒ…

λ³€μˆ˜μ™€ ν•¨μˆ˜ 선언이 μ΅œμƒλ‹¨μœΌλ‘œ μ˜¬λ €μ§€λŠ” ν˜„μƒ

console.log(a);

func();

function func() {
  console.log('ν•¨μˆ˜μ‹€ν–‰');
}

var a = 'λ³€μˆ˜';

μœ„ 경우, ν•¨μˆ˜μ‹€ν–‰μ€ μ œλŒ€λ‘œ μž‘λ™ν•˜κ³ , λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™”κ°€ 아직 λ˜μ§€ μ•Šμ€ 값이라 undefinedκ°€ 좜λ ₯λœλ‹€.

 

 

λ‹€μ‹œ 말해, JavaScript 엔진이 μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 λ³€μˆ˜ 및 ν•¨μˆ˜ 선언을 λ©”λͺ¨λ¦¬μ— λŒμ–΄μ˜¬λ¦¬λŠ” 것이닀. 즉, μ½”λ“œ μ‹€ν–‰ 이전에 μ„ μ–Έλœ λ³€μˆ˜μ™€ ν•¨μˆ˜κ°€ λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜μ–΄ κ·Έλ“€μ˜ μŠ€μ½”ν”„ λ‚΄μ—μ„œ μ–΄λ””μ—μ„œλ“ μ§€ μ ‘κ·Όν•  수 μžˆλ‹€.

console.log(x); // undefined
var x = 5;
console.log(x); // 5

μœ„μ˜ μ½”λ“œμ—μ„œ var x = 5의 선언은 ν˜Έμ΄μŠ€νŒ… λ˜μ–΄ console.log(x); 이전에 μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ, 값은 ν• λ‹Ήλ˜κΈ° μ „μ΄λ―€λ‘œ undefinedκ°€ 좜λ ₯λœλ‹€. μ΄λ ‡κ²Œ μ„ μ–ΈλΆ€κ°€ λ¨Όμ € ν˜Έμ΄μŠ€νŒ… 되고, 할당은 κ·Έ μžλ¦¬μ— 남아 있게 λœλ‹€.

 

 

ν•¨μˆ˜ ν‘œν˜„μ‹ (ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— λ‹΄μ•„μ„œ 그것을 μ‹€ν–‰ν•˜λŠ” 경우)으둜 μž‘μ„±ν•˜λ©΄, ν˜Έμ΄μŠ€νŒ…μœΌλ‘œ 인해 μ„ μ–Έλ§Œ λ¨Όμ € λ˜λ―€λ‘œ, μ—λŸ¬κ°€ λœ¬λ‹€.

func2();

// ν•¨μˆ˜ ν‘œν˜„μ‹
let func2 = function() {
    console.log('func2');
}

ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ μ„ μ–Έν–ˆμ„ λ•Œ μ—λŸ¬κ°€ λ‚˜λŠ” μ΄μœ λŠ” μ „μ—­ 객체에 func2 λ³€μˆ˜κ°€ μƒμ„±λμ§€λ§Œ, 할당될 ν•¨μˆ˜μ˜ μ΄ˆκΈ°ν™”κ°€ 아직 μ•ˆ 된 μƒνƒœμ—μ„œ ν˜ΈμΆœν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

 

 

func1();

// ν•¨μˆ˜ μ„ μ–Έλ¬Έ
function func1() {
    console.log('func1');
}

λ°˜λ©΄μ— ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ 객체가 이미 λ©”λͺ¨λ¦¬μ— μ˜¬λΌμ™€ μžˆλŠ” μƒνƒœμ—μ„œ ν˜ΈμΆœν–ˆκΈ° λ•Œλ¬Έμ— μ •μƒμ μœΌλ‘œ 호좜된 것이닀. 즉, ν•¨μˆ˜ 선언은 ν•¨μˆ˜κ°€ 호좜되기 전에 μ‚¬μš©ν•  수 μžˆλ‹€.

 

 

μœ„μ˜ μ˜ˆμ œμ—μ„œ func1()λ₯Ό ν˜ΈμΆœν•˜κΈ° 전에 ν•¨μˆ˜ func1의 선언이 ν˜Έμ΄μŠ€νŒ… λ˜μ–΄ μžˆμœΌλ―€λ‘œ 호좜이 κ°€λŠ₯ν•˜λ‹€.

 

 

μ°Έκ³  : const, let, const 차이 νŽ˜μ΄μ§€ 

μ €μž‘μžν‘œμ‹œ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Frontend > JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μ›μ‹œ κ°’κ³Ό 객체의 비ꡐ  (0) 2024.03.14
μœ μ‚¬ λ°°μ—΄ 객체, μ΄ν„°λŸ¬λΈ”, 래퍼 객체  (0) 2024.03.13
ν•¨μˆ˜ μ •μ˜ (ν•¨μˆ˜ μ„ μ–Έλ¬Έ, ν•¨μˆ˜ ν‘œν˜„μ‹)  (0) 2024.03.07
ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…  (0) 2024.03.06
var, let, const 차이  (0) 2024.03.03
    'Frontend/JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • μœ μ‚¬ λ°°μ—΄ 객체, μ΄ν„°λŸ¬λΈ”, 래퍼 객체
    • ν•¨μˆ˜ μ •μ˜ (ν•¨μˆ˜ μ„ μ–Έλ¬Έ, ν•¨μˆ˜ ν‘œν˜„μ‹)
    • ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…
    • var, let, const 차이
    wam
    wam

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”