TIL230105πŸ“JS)ν•¨μˆ˜ 선언방식에 λ”°λ₯Έ 차이점

seunghye joΒ·2023λ…„ 1μ›” 5일
0

javascript

λͺ©λ‘ 보기
7/14
post-thumbnail

ν•¨μˆ˜ 선언방식에 λ”°λ₯Έ μ°¨μ΄μ πŸ’‘


πŸ§‘ν•¨μˆ˜μ˜ μ’…λ₯˜

πŸ’›ν•¨μˆ˜ 선언식

  • 일반적인 ν•¨μˆ˜ 선언방식
  • κΈ°λͺ…ν•¨μˆ˜λ‘œ μ„ μ–Έ
  function myFn() {
    return 'function'
  }

πŸ’›ν•¨μˆ˜ ν‘œν˜„μ‹

  • λ³€μˆ˜μ— 읡λͺ…ν•¨μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” 방식
  const myFn = function() {
    return 'function'
  }

πŸ’›ν™”μ‚΄ν‘œ ν•¨μˆ˜

  • ES6λΆ€ν„° λ„μž… 된 방식
  • μž‘μ„±μ΄ 훨씬 κ°„νŽΈν•΄μ§
  • λ•Œμ—λ”°λΌ κ΄„ν˜Έ(), μ€‘κ΄„ν˜Έ{}, return의 μƒλž΅μ΄ κ°€λŠ₯
  const myFn = () => {}

πŸ§‘ν˜Έμ΄μŠ€νŒ…(Hoisting)

  • 선언식 ν•¨μˆ˜ vs ν‘œν˜„μ‹ ν•¨μˆ˜μ˜ 차이

  • ν˜Έμ΄μŠ€νŒ… : μ½”λ“œ μ‹€ν–‰ μ „ μž‘μ„±λœ ν•¨μˆ˜ or λ³€μˆ˜κ°€ ν•΄λ‹Ή μŠ€μ½”ν”„μ˜ μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄μ˜¬λ €μ§€λŠ” ν˜„μƒ
    μ‰½κ²Œλ§ν•΄ ν•¨μˆ˜μ˜ 호좜이 ν•¨μˆ˜μ„ μ–ΈλΆ€λ³΄λ‹€ μƒλ‹¨μ—μ„œ μΌμ–΄λ‚˜λ„ λ¬Έμ œμ—†μ΄ ν•¨μˆ˜κ°€ μž‘λ™ν•˜λŠ” ν˜„μƒμ΄λ‹€

  • μ„ μ–Έμ‹ν•¨μˆ˜μ—μ„œλŠ” ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜λ‚˜, λ³€μˆ˜μ— ν•¨μˆ˜λ₯Ό ν• λ‹Ήν•˜λŠ” ν‘œν˜„μ‹ ν•¨μˆ˜μ—μ„œλŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€

fn1() //'f1' μ •μƒμΆœλ ₯
fn2() //Error

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

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

🧑this의 μ •μ˜

  • μΌλ°˜ν•¨μˆ˜ vs ν™”μ‚΄ν‘œν•¨μˆ˜μ˜ 차이

  • μΌλ°˜ν•¨μˆ˜μ˜ thisλŠ” 호좜된 μ‹œμ μ—μ„œ μ •μ˜
    (ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” μœ„μΉ˜μ— 따라 this의 값이 달라 질 수 있음)

  • ν™”μ‚΄ν‘œν•¨μˆ˜μ˜ thisλŠ” μžμ‹ μ΄ μ„ μ–Έλœ μœ„μΉ˜μ—μ„œ μ •μ˜
    (ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” μœ„μΉ˜μ™€ 상관없이 μ„ μ–Έλœ μœ„μΉ˜μ˜ μƒλ‹¨λ²”μœ„μ—μ„œ thisλ₯Ό μ •μ˜

  const user = {
    name: "user",

    normalFn: function () {
      console.log(this.name)
    },

    arrowFn: () => {
      console.log(this.name)
    }
  }

  user.normalFn(); //"user"
  user.arrowFn(); //undefined

λ§ˆμΉ˜λ©°πŸ™Œ

ν˜Έμ΄μŠ€νŒ…μ€ ν™•μ‹€νžˆ 이해가 λ˜λŠ”λ° 사싀..thisλŠ” μ΄λ ‡κ²Œ λ°°μš΄λŒ€λ‘œ 정리λ₯Ό 해봐도....μ§„μ§œ λͺ¨λ₯΄κ² λ‹€... λ‚˜λ¦„λŒ€λ‘œ λ°°μš΄μ§€μ‹μ„ 기반으둜 μš”λ¦¬μ‘°λ¦¬ μ½”λ“œλ₯Ό μ§œλ΄λ„ μƒκ°μ΄λž‘ λ‹€λ₯΄κ²Œ λ‚˜μ˜€κΈ°λ„ ν•˜κ³ ... γ…œγ…œ thisλ₯Ό μ œλŒ€λ‘œ μ΄ν•΄ν•˜κ³  였면 이 글이 또 λ‹€λ₯΄κ²Œ 보일까... 흑흑 ...

profile
ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ„±μž₯일기 πŸ’­

0개의 λŒ“κΈ€