ν•¨μˆ˜ ν‘œν˜„μ‹ VS ν•¨μˆ˜ 선언식

ν•¨μˆ˜ 선언식 (function declartion)은 λ³„λ„μ˜ ν• λ‹Ή 없이 ν•¨μˆ˜λ§Œ μ •μ˜λœ ν˜•νƒœ

function sum (a, b) {
  return a + b;
}

ν•¨μˆ˜ ν‘œν˜„μ‹ (function Expression)은 μ •μ˜λœ ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠ” ν˜•νƒœ

const sum = function (a, b) {
  return a + b;
}

이 λ‘˜μ˜ μ£Όμš” 차이점은 ν˜Έμ΄μŠ€νŒ…(hoisting)이닀. ν•¨μˆ˜ 선언식은 ν•¨μˆ˜ 전체가 ν˜Έμ΄μŠ€νŒ… 되기 λ•Œλ¬Έμ— ν•¨μˆ˜ μ„ μ–Έ 전에 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. 반면 ν•¨μˆ˜ ν‘œν˜„μ‹μ€ λ³„λ„μ˜ λ³€μˆ˜μ— ν• λ‹Ήν•˜λŠ” ν˜•νƒœλΌ λ³€μˆ˜μ˜ μ„ μ–ΈλΆ€λ§Œ ν˜Έμ΄μŠ€νŒ…ν•˜κ²Œ λœλ‹€.

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ (Execution Context)

μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ ν™˜κ²½μ΄ μ œκ³΅λ˜λŠ” λ²”μœ„