MapleStory Finger Point

๐Ÿ”ด WEB/๐ŸŸก 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. ๋ฐฑํ‹ฑ `์„ ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๊ณ , ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ${}๋ฅผ ์ด์šฉํ•ด์„œ ํ•„์š”๊ฐ’์„ ์ฒ˜๋ฆฌ

let name = 'ํ™๊ธธ๋™';
let message = `์•ˆ๋…•ํ•˜์„ธ์š”, ${name}๋‹˜!`;
console.log(message); // ์•ˆ๋…•ํ•˜์„ธ์š”, ํ™๊ธธ๋™๋‹˜!

 


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

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

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

 

 

๐Ÿ’€   Map

 

const arr = [1, 2, 3];
const doubled = arr.map(x => x * 2);
console.log(doubled); // [2, 4, 6]

 

 

 

๐Ÿ’€  Filter

  • filter ํ•จ์ˆ˜
  • filter( ์ฝœ๋ฐฑ (ํ˜„์žฌ๊ฐ’,์ธ๋ฑ์Šค,ํ˜„์žฌ๋ฐฐ์—ด))
const arr = [1, 2, 3, 4];
const even = arr.filter(x => x % 2 === 0);
console.log(even); // [2, 4]

 

 

๐Ÿ’€   forEach

const arr = [1, 2, 3];
arr.forEach(x => console.log(x)); // 1 2 3

 

 


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

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

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

 

class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`์•ˆ๋…•ํ•˜์„ธ์š”, ${this.name}๋‹˜!`);
}
}
const p = new Person('ํ™๊ธธ๋™', 30);
p.greet(); // ์•ˆ๋…•ํ•˜์„ธ์š”, ํ™๊ธธ๋™๋‹˜!

 

 


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

  • 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๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋‚ด๋ณด๋‚ผ๋–„๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์ด์ง€ ์•Š๋„๋ก ๊ถŒ์œ ๋ฉ๋‹ˆ๋‹ค.