MapleStory Finger Point

๐ŸŸก JavaScript

๋ฏธ์™„[JS ES6] JavaScript ES6 ๋ฌธ๋ฒ• (๊ธฐ์ดˆ ์ •๋ฆฌ)

HYEJU01 2024. 8. 25. 20:37

โ—ˆ JS ES6 ๋ž€?

"ECMAScript 6"์˜ ์•ฝ์ž๋กœ, ๊ณต์‹์ ์œผ๋กœ๋Š” ECMAScript 2015๋กœ ๋ถˆ๋ฆผ

ES6๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ค‘์š”ํ•œ ์—…๋ฐ์ดํŠธ ์ค‘ ํ•˜๋‚˜๋กœ, 2015๋…„์— ๋ฐœํ‘œ๋จ

๋งŽ์€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋„์ž…ํ•จ

 

๐Ÿ˜ ์‰ฝ๊ฒŒ,  ์ผ์ข…์˜ ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.!

 

 


 

 

โ—ˆ let๊ณผ const

๐Ÿ’€ let 

์žฌํ• ๋‹น  ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
์ค‘๋ณต์„ ์–ธ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
๋ฒ”์œ„ ์œ ํšจ ๋ฒ”์œ„๋Š” {} ๋ธ”๋ก
 

 

๐Ÿ’€ const 

์žฌํ• ๋‹น  (์ƒ์ˆ˜) ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ
 ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์€ ๋‚ด๋ถ€ ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
์ค‘๋ณต์„ ์–ธ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
๋ฒ”์œ„ ์œ ํšจ ๋ฒ”์œ„๋Š” {} ๋ธ”๋ก

 

 

let, const ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ… ๋œ๋‹ค. (์„ ์–ธ ์ „์—๋Š” ๋ถˆ๊ฐ€๋Šฅ, "์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(Temporal Dead Zone, TDZ)" ๋•Œ๋ฌธ)
ํ˜ธ์ด์ŠคํŒ…(Hoisting)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์„ ์–ธ์ด ์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ๊ฐœ๋…

 

 


 

 

โ—ˆ ๋ฐฐ์—ด (spread operator (์ „๊ฐœ๊ตฌ๋ฌธ))

๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ (iterable) ์— ์ ์šฉ ๊ฐ€๋Šฅ ๋ฌธ๋ฒ•

๋ฐฐ์—ด, ๋ฌธ์ž์—ด ๋“ฑ์„ ์š”์†Œ ํ•˜๋‚˜ํ•˜๋‚˜๋กœ ์ „๊ฐœ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ

 

	
    const arr = [1,2,3];
    console.log(...arr); //num์˜ ์š”์†Œ๋“ค์„ ์ถ”์ถœ
    
    const str1 = 'hello'; 
    const str2 = [...str1]; 
    console.log(str2); // [ "h", "e", "l", "l", "o"]
	
    //๋ฐฐ์—ด์—์„œ ์ „๊ฐœ๊ตฌ๋ฌธ
    //๋ฐฐ์—ด์˜ ์ถ”๊ฐ€
    const num1 = [10, 20, 30, ...arr];
    console.log(num1)

    //๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์ถ”๊ฐ€
    const num2 = [10, 20, ...arr, 30];
    console.log(num2)

    //๋ฐฐ์—ด์˜ ๋ณต์‚ฌ
    const num3 = [...arr]; //splice์™€ ์œ ์‚ฌ(๋ณต์‚ฌ)
    console.log(num3)

    //๋ฐฐ์—ด ์—ฐ๊ฒฐ
    const num4 = [...arr, ...arr]
    console.log(num4)

 

๐Ÿ’€  (+) default ๋งค๊ฐœ๊ฐ’ :: ํ•จ์ˆ˜

ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์ธ์ž๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์คŒ

ํ•จ์ˆ˜ ์ •์˜ ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ง์ ‘ ํ• ๋‹นํ•˜์—ฌ ์„ค์ •

    const num = [1,2,3];

    //ํ•จ์ˆ˜์˜ ์ „๋‹ฌ
    function sum(x, y, z) {
        return x + y + z;
    }
    console.log( sum(...num) ); //num์˜ ์š”์†Œ๋ฅผ x,y,z๋กœ ์ „๋‹ฌ
    console.log( sum(10, ...num) ); //10, 1, 2, 3์„ ์ „๋‹ฌ


    //ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ(๊ฐ€๋ณ€์  ๋งค๊ฐœ๋ณ€์ˆ˜) - ๋‹จ ๋งˆ์ง€๋ง‰์— ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    function sum2(x, ...arr) {
        return [x, ...arr]; //๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜
    }

    console.log( sum2("ํ™๊ธธ๋™", 1) )
    console.log( sum2("ํ™๊ธธ๋™", 1,2) )
    console.log( sum2("ํ™๊ธธ๋™", 1,2,3) )


    //ํ•จ์ˆ˜์˜ default๋งค๊ฐœ๊ฐ’
    function sum3(x, y = 10, z = 100) {
        return x + y + z;
    }

    console.log( sum3(1) ) //111
    console.log( sum3(1, 2) ) //103
    console.log( sum3(1, 2, 3) ) //6
    console.log( sum3(...[1,2] )) //1,2๋ฅผ ์ถ”์ถœํ•ด์„œ ์ „๋‹ฌ //103

 

 

 


 

 

 

โ—ˆ Destructuring assignment (๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น)

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•

 

 

 

๐Ÿ’€ ๋ฐฐ์—ด

 let arr = ["ํ™๊ธธ๋™", "์ด์ˆœ์‹ ", "ํ™๊ธธ์ž", "๊น€์ฒ ์ˆ˜"];
    /* ๊ธฐ์กด์˜ ๋ฐฉ๋ฒ•
    let n1 = arr[0];
    let n2 = arr[1];
    let n3 = arr[2];
    let n4 = arr[3];
    */

    //์œ„์น˜์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„์„œ ํ•œ๋ฒˆ์— ์‚ฌ์šฉํ•œ๋‹ค.
    let [a,b,c,d] = arr;
    console.log(a,b,c,d)

    let [n1, , ,n2] = arr;
    console.log(n1, n2)

    //์ „๋ถ€๋‹ค ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    let [...x] = arr;
    console.log(x);

    //๋‚จ์•„์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    let [k1, k2, ...all] = arr;
    console.log(k1, k2, all)

 

 

๐Ÿ’€ ๊ฐ์ฒด

 let person = {
        "name": "๊น€์ฒ ์ˆ˜", 
        "age" : 30,
        "job" : ["programmer", "designer"]
    }
	
    //nameํ‚ค ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค.
    let {name} = person;
    console.log(name);
    
    let {name, age, job} = person;
    console.log(name, age, job);

    //๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
    let {name: aaa, age:bbb} = person; //name์„ aaa์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค
    console.log(aaa, bbb)

 

 

๐Ÿ’€  JSON ๊ตฌ์กฐ์—์„œ ํฐ ์—ญํ• ์„ ํ•œ๋‹ค !

 

 

 

 


 

 

โ—ˆ for of๋ฌธ

  • ๊ฐ์ฒด๋Š” ์ง์ ‘ ์ˆœํšŒํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(iterable)๋ฅผ for๋ฌธ ์•ˆ์—์„œ ๋ฐ˜๋ณต์‹œ์ผœ ์—ฐ์†๋œ ๊ฒฐ๊ณผ๊ฐ’ ์–ป์Œ
  • forEach๋ฌธ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” break, continue, return์˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ

 

 let arr = ["a", "b", "c"];
    //๊ธฐ์กด์˜ for๋ฌธ
    /*
    for(let i = 0; i < arr.length; i++) {
        console.log(arr[i]);
    }
    for(let i in arr) {
        console.log(arr[i]); //i๋Š” ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์•„์ค€๋‹ค
    }
    */
    
    //๊ธฐ์กด์˜ foreach๋ฌธ
    /*
    arr.forEach(function(value, index, arr) { 
        console.log(value);
        console.log(index);
        console.log(arr);
    })
	*/

    //es06 - forof๋ฌธ (๋‹จ list๊ฐ™์€ ๋ฐ˜๋ณต๊ฐ€๋Šฅ ์š”์†Œ์—๋งŒ ์ ์šฉ๋œ๋‹ค)
    for(let i of arr ) {
        console.log(i); //๊ฐ’์„ ๋ฝ‘์•„์ค€๋‹ค.
    }
    
    //error
    let obj = {name: "g", age: 1};
    for(let i of obj) {
        console.log(i);
    }

 


โ—ˆ Backtick 

1. ๋ฐฑํ‹ฑ `์„ ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๊ณ , ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ${}๋ฅผ ์ด์šฉํ•ด์„œ ํ•„์š”๊ฐ’์„ ์ฒ˜๋ฆฌ

 

 


 

โ—ˆ Arrow Function (ํ™”์‚ดํ‘œํ•จ์ˆ˜)

1. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ต๋ช…ํ•จ์ˆ˜๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. (ํ˜ธ์ด์ŠคํŒ… ๋ถˆ๊ฐ€)

2. ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’€   forEach

 

 

 

๐Ÿ’€  Filter

  • filter ํ•จ์ˆ˜
  • filter( ์ฝœ๋ฐฑ (ํ˜„์žฌ๊ฐ’,์ธ๋ฑ์Šค,ํ˜„์žฌ๋ฐฐ์—ด))

 

 

 

๐Ÿ’€   Map


โ—ˆ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ class

์ผ๋ฐ˜HTML์—์„œ๋Š” ๊ตณ์ด class๋ฅผ ์‚ฌ์šฉํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. 

React์˜ class์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์•Œ์•„๋‘์„ธ์š”.

 

React class ์ปดํฌ๋„ŒํŠธ

 

โ—ˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒ์†

  • super(); ์ƒ๋žต์•ˆ๋จ
  • func ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๊ฐ€๋Šฅ

 


โ—ˆ module import export

 

module

  • ES6 ์—์„œ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค ํŒŒ์ผ
  • ๋ณ€์ˆ˜,ํ•จ์ˆ˜,ํด๋ž˜์Šค ๋“ฑ

๋ชจ๋“ˆ์„ ์™ธ๋ถ€๋กœ ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•

  • name export ์—ฌ๋Ÿฌ๊ฐœ
  • default export ํ•˜๋‚˜์”ฉ

html:5 ์—์„œ ์˜ˆ์™ธ์ ์œผ๋กœ ๋ชจ๋“ˆ ๋ฐฉ์‹ ์‚ฌ์šฉํ•˜๋ ค๋ฉด

  • type=module ์„ ์จ์ค˜์•ผํ•œ๋‹ค.

 

 

 


๐Ÿ’€  named export 

 

Named export๋Š” JavaScript์˜ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ชจ๋“ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด:

  • Named export๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ณด๋‚ด๊ณ  ์‹ถ์€ ์„ ์–ธ ์•ž์— 'export' ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ named export๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์—์„œ ํ•„์š”ํ•œ ํ•จ์ˆ˜๋‚˜ ๊ฐ’๋งŒ ์„ ํƒ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ„์นญ ์„ค์ •ํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐ€๋Šฅ

 

 

 

๐Ÿ’€  export default

export default๋Š” ๋ชจ๋“ˆ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ๋‚ด๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • ํŒŒ์ผ ๋‹น ํ•˜๋‚˜์˜ export default๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฆ„ ์—†์ด ๊ฐ’์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • importํ•  ๋•Œ ์ค‘๊ด„ํ˜ธ {} ์—†์ด ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์ „์ฒด์—์„œ ๋‹จ ํ•œ๊ฐœ๋งŒ ๋‚ด๋ณด๋‚ผ๋•Œ
  • ํŒŒ์ผ์„ ๋Œ€ํ‘œํ•˜๋Š” ๊ตฌ๋ฌธ์„ ํ•˜๋‚˜ ๋‚ด๋ณด๋ƒ„
  • Class๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋‚ด๋ณด๋‚ผ๋–„๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์ด์ง€ ์•Š๋„๋ก ๊ถŒ์œ ๋ฉ๋‹ˆ๋‹ค.