lil.dev
Published on

πŸŽ‰ JS(5)-λ“œλ¦Όμ½”λ”© κ°•μ˜ 정리

글쓴이

    πŸ“Œ λͺ©μ°¨

    Welcome

    ✨ μžλ°”μŠ€ν¬λ¦½νŠΈ 기초 κ°•μ˜ (ES5+): 같이 λ…ΈνŠΈλ₯Ό μž‘μ„±ν•˜λ©° λ°°μ›Œμš” πŸ“’

    πŸ’πŸ»

    1. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 역사와 λͺ©μ  및 동ν–₯
    2. μžλ°”μŠ€ν¬λ¦½νŠΈ λ™μž‘μ›λ¦¬

    ν•¨μˆ˜(5κ°•)

    절차적인 언어같은 κ²½μš°λŠ” ν•¨μˆ˜κ°€ ꡉμž₯히 μ€‘μš”ν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ„ procedural language쀑에 ν•˜λ‚˜μ΄λ‹€.

    1. Function

    input(x)을 λ„£μœΌλ©΄ output(f(x))이 λ‚˜μ˜€λŠ” 것이 λ°”λ‘œ ν•¨μˆ˜ ν•¨μˆ˜μ˜ 이름을 μ •ν•˜λŠ” 것이 μ€‘μš”!!

    • fundamental building block in the program
    • subprogram can be used multiple times
    • performs a task or calculates a value

    2. Function declaration

    ν•¨μˆ˜ μž‘μ„±λ²• : function name(param1, param2) { body... return; }<br />
    ν•˜λ‚˜μ˜ ν•¨μˆ˜λŠ” ν•œκ°€μ§€μ˜ 일만 ν•΄μ•Όν•œλ‹€ : one function === one thing<br />
    λ™μ‚¬ν˜•νƒœλ‘œ 이름을 지어야 ν•œλ‹€. : naming: doSomething, command, verb<br />
    e.g. createCardAndPoint -> createCard, createPoint<br />
    `function` is object in JS
    

    3. Parameters

    primitive parameters: passed by value
    object parameters: passed by reference

    4. Default parameters (added in ES6)

    function showMessage(message, from = 'unknown') {
      console.log(`${message} by ${from}`);
    }
    showMessage('Hi!');
    

    5. Rest parameters

    ...을 μ“°λ©΄ λ°°μ—΄ ν˜•νƒœλ‘œ μΈμžκ°€ μ „λ‹¬λœλ‹€.

    function printAll(...args) {
      for (let i = 0; i < args.length; i++) {
        console.log(args[i]);
      }
    
      //for of
      for (const arg of args) {
        console.log(arg);
      }
    
      args.forEach((arg) => console.log(arg));
    }
    printAll('dream', 'coding', 'ellie');
    

    6. Local scope

    ν΄λ‘œμ €λ‚˜ λ ‰μ‹œν΄ μΈλ°”μ΄λŸ¬λ¨ΌνŠΈ?λ₯Ό μ“Έ λ•Œ μ€‘μš”

    λ°–μ—μ„œλŠ” μ•ˆμ΄ 보이지 μ•Šκ³  μ•ˆμ—μ„œλ§Œ 밖을 λ³Ό 수 μžˆλ‹€. -> 지역 λ³€μˆ˜

    7. Return

    ν•¨μˆ˜μ—μ„œλŠ” κ³„μ‚°ν•œ 값을 return을 톡해 λ°˜ν™˜ν•œλ‹€.

    8. Early return, early exit

    쑰건이 λ§žμ§€ μ•Šμ„ λ•ŒλŠ” 빨리 return을 ν•΄μ„œ ν•¨μˆ˜λ₯Ό μ’…λ£Œν•˜κ³  쑰건이 λ§žλŠ” 경우 κ·Έ λ‹€μŒ 계산을 μ§„ν–‰ν•œλ‹€.

    9. Function expression

    ν•¨μˆ˜λ₯Ό 선언함과 λ™μ‹œμ— λ³€μˆ˜μ— 할당함 -> 이름이 μ—†λŠ” ν•¨μˆ˜. ν•¨μˆ˜ 선언을 ν•˜λ©΄ hoisting이 κ°€λŠ₯ν•˜μ§€λ§Œ ν•¨μˆ˜ ν‘œν˜„μ‹μ€ hoisting이 λΆˆκ°€λŠ₯ν•˜λ‹€. ν•¨μˆ˜ ν‘œν˜„μ‹μ—μ„œ 이름을 지은 ν•¨μˆ˜λŠ” 디버깅을 ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

    10. Callback function

    ν•¨μˆ˜λ₯Ό parameters에 μ „λ‹¬ν•΄μ„œ μƒμœ„ ν•¨μˆ˜μ˜ 값에 따라 μ „λ‹¬λœ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€.

    11. Arrow function

    ν•¨μˆ˜λ₯Ό κ°„κ²°ν•˜κ²Œ λ§Œλ“€μ–΄μ£ΌλŠ” anonymous ν•¨μˆ˜ λΈ”λŸ­λ„ μ•ˆμ“°κ³  이름도 μ•ˆμ“°κ³  return도 μ•ˆμ“°κ³  =>으둜 κ°„κ²°ν•˜κ²Œ ν‘œν˜„ν•œλ‹€. λΈ”λŸ­μ„ 써도 λ˜λŠ”λ° 그러면 return을 μ‚¬μš©ν•œλ‹€. ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 빛을 λ°œν•œλ‹€~!

    12. IIFE

    Immediately Invoked Function expression ν•¨μˆ˜λ₯Ό λ°”λ‘œλ°”λ‘œ μ‹€ν–‰ν•˜κ³  μ‹Άμ„λ•Œ μ“°λŠ” ν•¨μˆ˜