λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

#1 Language πŸ‘„/1-2 Javascript

[Javascript] ECMAScript 6 (ES6)_1

πŸ’‘ ES5와 ES6의 차이

ES5와 ES6의 λŒ€ν‘œμ μΈ 차이점

  • λ³€μˆ˜ μ„ μ–Έ
  • ν™”μ‚΄ν‘œ ν•¨μˆ˜, this
  • ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄
  • λͺ¨λ“ˆ
  • 클래슀

 

1. ES5 vardml λ¬Έμ œμ 
    - var μ€‘볡 μ„ μ–Έμ΄ κ°€λŠ₯
    - varλŠ” λΆˆλ‘ λ‹¨μœ„ λ³€μˆ˜κ°€ μ•„λ‹˜ (ν•¨μˆ˜λ‚˜ μ „μ—­ λ‹¨μœ„λ§Œ μ§€μ • κ°€λŠ₯)
    - varλŠ” ν˜Έμ΄μŠ€νŒ…(μ„  μ‚¬μš© ν›„ μ„ μ–Έ) κ°€λŠ₯ 

2. λΈ”둝 λ‹¨μœ„μ˜ let λ“±μž₯
    - let은 μ€‘볡 μ„ μ–Έ λΆˆκ°€λŠ₯
    - let은 λΈ”둝 λ‹¨μœ„μ˜ λ³€μˆ˜
    - let은 ν˜Έμ΄μŠ€νŒ… λΆˆκ°€λŠ₯

3. μƒμˆ˜λ₯Ό μ •μ˜ν•˜λŠ” const ν‚€μ›Œλ“œ
    - μƒμˆ˜λ₯Ό μ •μ˜ν•  λ•ŒλŠ” μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™” ν•„μˆ˜
    - letκ³Ό λ™μΌν•˜κ²Œ λΈ”둝 λ‹¨μœ„ λ³€μˆ˜, ν˜Έμ΄μŠ€νŒ…μ„ μ§€μ›ν•˜μ§€ μ•ŠμŒ
    - constλŠ” μƒμˆ˜μ΄κΈ° λ•Œλ¬Έμ— μƒˆλ‘œμš΄ κ°’을 ν• λ‹Ήν•  μˆ˜ μ—†μŒ
    - const μ„ μ–Έ μ‹œ λ³€μˆ˜λͺ…은 λŒ€λ¬Έμžλ‘œ μ§€μ •

4. const ν‚€μ›Œλ“œμ™€ κ°μ²΄
    - const둜 κ°μ²΄λ₯Ό μ„ μ–Έ μ‹œ κ°μ²΄ λ‚΄μš© λ³€κ²½ κ°€λŠ₯
    - μ›μ‹œ κ°’인 λ³€μˆ˜λŠ” μž¬ν• λ‹Ή μ—†μ΄ λ³€μˆ˜ κ°’을 λ³€κ²½ν•  μˆ˜ μ—†μŒ
    - κ°μ²΄ μ†μ„± κ°’듀은 μž¬ν• λ‹Ή μ—†μ΄ μ§μ ‘ λ³€κ²½ κ°€λŠ₯
    - const: μž¬ν• λ‹Ή κΈˆμ§€, λΆˆλ³€ μ˜λ―ΈX

5. ES6 λ³€μˆ˜ μ„ μ–Έ
    - κΈ°λ³Έμ μœΌλ‘œ constλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ˜ μž¬ν• λ‹Ήμ΄ ν•„μš”ν•œ λ³€μˆ˜λŠ” let으둜 μ„ μ–Έ
    - varλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒ
    - let λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” μ΅œμ†Œν•œμ˜ λ‹¨μœ„ μ„ μ–Έ
    - μƒμˆ˜μ™€ κ°μ²΄λŠ” constλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„ μ–Έ

6. Template Literal
    - ES6μ—μ„œ λ„μž…λœ μƒˆλ‘œμš΄ λ¬Έμžμ—΄ ν‘œκΈ°λ²•
    - λ©€ν‹°λΌμΈ λ¬Έμžμ—΄, ν‘œν˜„식 μ‚½μž…, νƒœκ·Έλ“œ νƒ¬ν”Œλ¦Ώμ„ μ§€μ›
    - λ°±ν‹±(`)을 μ‚¬μš©ν•˜μ—¬ μ„ μ–Έ
    - ${ } μ΄μš©ν•΄μ„œ μ„ μ–Έλœ λ³€μˆ˜λ₯Ό λ¬Έμžμ—΄μ— μ§μ ‘ μ‚½μž… κ°€λŠ₯ 

7. μ§€μˆ˜ μ—°μ‚°μž
    - κ±°λ“­μ œκ³±μ„ κ³„μ‚°ν•΄μ£ΌλŠ” μ—°μ‚°μž
    - **둜 ν‘œμ‹œ
    - Math.pow()λž‘ λ™μΌν•œ κΈ°λŠ₯

8. λ…Όλ¦¬ μ—°μ‚°μžλ₯Ό μ΄μš©ν•œ λ‹¨μΆ• ν‰κ°€
    - &&, || κ²°κ³Όλ₯Ό κ²°μ •ν•˜λŠ” κ°’을 λ°˜ν™˜
    - ex) 'cat' && 'dog' = 'dog'
    - ex) 'cat' || 'dog' = 'cat'
    - true || anything = true
      false || anything = anything
    - true && anything = anything
      false && anything = false

9. κ°μ²΄μ— μΆ”κ°€λœ κΈ°λŠ₯
    - μ†μ„±μ˜ μΆ•μ•½ ν‘œν˜„
        var obj = {
            x: 1,
            y: 2
        }
        //ES6
        let x = 1, y = 2;
        const obj = {x, y};
    - κ³„μ‚°λœ ν”„λ‘œνΌν‹° μ΄λ¦„
      Templateliteral ν‘œν˜„식 μ‚½μž… κΈ°λŠ₯을 μ΄μš©ν•˜μ—¬ λ™μ μœΌλ‘œ μ†μ„±κ°’을 λ§Œλ“€ μˆ˜ μžˆμŒ
    - λ©”μ†Œλ“œμ˜ μΆ•μ•½ ν‘œν˜„

10. ES6μ—μ„œ μƒˆλ‘œ λ„μž…λœ class
    - ES5μ—μ„œλŠ” κ°μ²΄μ˜ μƒμ†μ„ ν•˜λ €λ©΄ λ¬΄μ‘°κ±΄ ν”„λ‘œν† νƒ€μž…μ˜ μƒμ†μ„ μ΄μš©
    - 객체지ν–₯ 언어에 μ΅μˆ™ν•œ κ°œλ°œμžλ“€μ΄ ν”„λ‘œν† νƒ€μž… 기반 κ°œλ°œμ— 어렀움을 느껴 ES6λΆ€ν„°λŠ” classκ°€ λ„μž… 됨 
    - classλ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν”„λ‘œν† νƒ€μž… κΈ°λ°˜μ„ ν¬κΈ°ν•˜λŠ” κ²ƒμ€ μ•„λ‹˜
    - ES5의 κ°μ²΄ μƒμ„±λ°©μ‹μ— ν•˜λ‚˜μ˜ λ°©μ‹μ΄ μΆ”κ°€λœ κ²ƒ
    - κΈ°μ‘΄ κ°μ²΄ μƒμ„± λ°©μ‹λ³΄λ‹€ νŽΈν•˜κ²Œ μƒμ† κ΅¬ν˜„ κ°€λŠ₯ (extends, super ν‚€μ›Œλ“œ μ‚¬μš© κ°€λŠ₯)
    - class의 μ„ μ–Έ 
      class κ°μ²΄λͺ… {
            //μƒμ„±μž ν•¨μˆ˜λŠ” λ°˜λ“œμ‹œ constructor μ‚¬μš©
            constructor(λ§€κ°œλ³€μˆ˜){
                μ΄ˆκΈ°ν™”κ³Όμ •;
            }
            ν”„λ‘œν† νƒ€μž… λ©”μ†Œλ“œ{

            }
            μ •적 λ©”μ†Œλ“œ{

            }
            get getter λ©”μ†Œλ“œ(){

            }
            set setter λ©”μ†Œλ“œ(){

            }
      }
    - classμ—λŠ” ν•„λ“œ μ§€μ • λΆˆκ°€λŠ₯, λ©”μ†Œλ“œλ§Œ μ„ μ–Έ κ°€λŠ₯

11. class의 μƒμ†
    - extends ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒμ†λ°›μ•„ μƒˆλ‘œμš΄ ν΄λž˜μŠ€λ₯Ό μ •μ˜
    - μƒμ„± ν•¨μˆ˜λ₯Ό μƒμ† λ°›μ•„ λ™μ μœΌλ‘œ ν΄λž˜μŠ€ μƒμ„± κ°€λŠ₯

12. ES6 ν™”μ‚΄ν‘œ ν•¨μˆ˜
    - ES6 μ΄μ „μ˜ λ©”μ†Œλ“œλ“€μ€ λͺ¨λ‘ ν˜ΈμΆœ κ°€λŠ₯ν•˜λ©΄μ„œ μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš© κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— λͺ¨λ“  λ©”μ†Œλ“œλ“€μ— λΆˆν•„μš”ν•˜κ²Œ prototype κ°μ²΄κ°€ μƒμ„±λ˜λŠ” κ²½μš°κ°€ λ°œμƒ
    - ν˜ΈμΆœ κ°€λŠ₯ν•˜μ§€λ§Œ μƒμ„±μž ν•¨μˆ˜λ‘œλŠ” μ‚¬μš© λΆˆκ°€λŠ₯ν•œ ν™”μ‚΄ν‘œ ν•¨μˆ˜ λ“±μž₯
    - ν™”μ‚΄ν‘œ λ©”μ†Œλ“œμ˜ μ •μ˜
        function ν‚€μ›Œλ“œ λŒ€μ‹  =>
    //ES5
    function add(a,b){
        return a + b;
    }
    //ES6 ν™”μ‚΄ν‘œ ν•¨μˆ˜
    const add = (a,b) => {
        return a + b;
    }
    const add = (a, b) => (
        a + b;
    )
    const print = a =>{
        console.log(a);
    }
    const add = () => {
        console.log(1 + 2);
    }

13. ν™”μ‚΄ν‘œ ν•¨μˆ˜μ™€ μΌλ°˜ ν•¨μˆ˜μ˜ μ°¨μ΄μ 
    - ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš© λΆˆκ°€λŠ₯
    - ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” prototype μƒμ„±λ˜μ§€ μ•ŠμŒ
    - μ€‘λ³΅λœ λ§€κ°œλ³€μˆ˜ μ΄λ¦„ μ‚¬μš© λΆˆκ°€λŠ₯
    - ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” arguments, this, super, new.target λ°”인딩을 κ°–μ§€ μ•ŠμŒ

    - ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 일반 ν•¨μˆ˜μ™€λŠ” 달리 μžμ‹ λ§Œμ˜ thisλ₯Ό κ°€μ§€μ§€ μ•ŠμŒ

    - ν™”μ‚΄ν‘œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ thisλ₯Ό μ‚¬μš©ν•˜λ©΄, κ·Έ thisλŠ” μ™ΈλΆ€μ—μ„œ 값을 κ°€μ Έ  옴

14. Rest νŒŒλΌλ―Έν„°
    - ...ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜μ— μ „λ‹¬λœ λ§€κ°œλ³€μˆ˜ λͺ©λ‘μ„ λ°°μ—΄λ‘œ μ „달 λ°›λŠ”λ‹€.

15. λ§€κ°œλ³€μˆ˜μ˜ κΈ°λ³Έ κ°’ μ§€μ •
    - ES6μ—μ„œ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ λ§€κ°œλ³€μˆ˜μ˜ κΈ°λ³Έ κ°’ μ§€μ • κ°€λŠ₯
    function add (a = 1, b = 1){
        return a + b;
    }
    - Rest Parameterμ—λŠ” κΈ°λ³Έ κ°’ μ§€μ • λΆˆκ°€λŠ₯

16. λ°°μ—΄μ˜ κ³ μ°¨μ› ν•¨μˆ˜
    - concat : μ›λ³Έ λ°°μ—΄ λ§ˆμ§€λ§‰μ— μƒˆλ‘œμš΄ μš”μ†Œλ₯Ό μΆ”κ°€ν•œ λ°°μ—΄ λ°˜ν™˜
    - map : λ°°μ—΄μ˜ μš”μ†Œλ₯Ό ν•˜λ‚˜μ”© κΊΌλ‚΄μ„œ μΈμˆ˜λ‘œ μ „λ‹¬λœ μ½œλ°± ν•¨μˆ˜λ₯Ό λ°˜λ³΅ ν˜ΈμΆœ
            μ½œλ°± ν•¨μˆ˜μ˜ λ°˜ν™˜ κ°’λ“€λ‘œ μ΄λ£¨μ–΄μ§„ μƒˆλ‘œμš΄ λ°°μ—΄ λ°˜ν™˜
    - filter : λ°°μ—΄μ˜ μš”μ†Œλ₯Ό ν•˜λ‚˜μ”© κΊΌλ‚΄μ„œ μΈμˆ˜λ‘œ μ „λ‹¬λœ μ½œλ°± ν•¨μˆ˜λ₯Ό λ°˜λ³΅ ν˜ΈμΆœ
               μ½œλ°± ν•¨μˆ˜μ˜ λ°˜ν™˜ κ°’이 true인 μš”μ†Œλ‘œλ§Œ μ΄λ£¨μ–΄μ§„ μƒˆλ‘œμš΄ λ°°μ—΄ λ°˜ν™˜

LIST