[JS] ES6 ๋ฌธ๋ฒ•

jinyยท2025๋…„ 10์›” 15์ผ

๊ธฐ์ˆ  ๋ฉด์ ‘

๋ชฉ๋ก ๋ณด๊ธฐ
64/78

๐Ÿ—ฃ๏ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6 ๋ฌธ๋ฒ•์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • ์˜๋„: ์ง€์›์ž๊ฐ€ ES6์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๊ณผ ๊ทธ ํ™œ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š”์ง€ ํ‰๊ฐ€
  • ํŒ: let, const, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜, ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด, ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง, ๊ธฐ๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ, ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž ๋“ฑ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.
  • ๋ชจ๋ฒ” ๋‹ต์•ˆ

    ES6์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ๋Œ€ํ‘œ์ ์œผ๋กœ let๊ณผ const๊ฐ€ ๋„์ž…๋˜์–ด ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๊ณ , ๋ณ€์ˆ˜์˜ ์žฌ์„ ์–ธ์ด๋‚˜ ์žฌํ• ๋‹น์„ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    ๋˜ํ•œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ํ•จ์ˆ˜๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , this๊ฐ€ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด ์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ์ด ๋†’์•„์กŒ๊ณ ,
    ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง, ์ฆ‰ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์—์„œ ํ•„์š”ํ•œ ๊ฐ’์„ ๊ฐ„๋‹จํžˆ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฌธ๋ฒ•์„ ์ด์šฉํ•˜๋ฉด ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ ,
    ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ํ•ฉ์น  ๋•Œ ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ES6 ๋ฌธ๋ฒ•๋“ค์€ ์ „์ฒด์ ์œผ๋กœ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ ๋ณ€ํ™”๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ ๊ฐœ๋… ์ •๋ฆฌ

๐ŸŒŸ let, const โ€” ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋ณ€์ˆ˜ ์„ ์–ธ

ES6์—์„œ๋Š” var ๋Œ€์‹  let๊ณผ const๊ฐ€ ๋„์ž…๋˜์–ด ์Šค์ฝ”ํ”„(์œ ํšจ ๋ฒ”์œ„)๊ฐ€ ๋ธ”๋ก ๋‹จ์œ„๋กœ ์ œํ•œ๋จ

  • let: ์žฌํ• ๋‹น ๊ฐ€๋Šฅ, ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€
  • const: ์žฌํ• ๋‹น ๋ถˆ๊ฐ€, ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€ โ†’ ์˜๋„์น˜ ์•Š์€ ๋ณ€์ˆ˜ ์˜ค์—ผ ๋ฐฉ์ง€ ๋ฐ ์ฝ”๋“œ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ
let count = 1;
count = 2; // ๊ฐ€๋Šฅ

const PI = 3.14;
PI = 3.1415; // โŒ ์˜ค๋ฅ˜ (์žฌํ• ๋‹น ๋ถˆ๊ฐ€)

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

  • function ํ‚ค์›Œ๋“œ ๋Œ€์‹  ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ
  • this๊ฐ€ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์–ด ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋„ ์ง๊ด€์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•จ
// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
const add = (a, b) => a + b;

// ๊ธฐ์กด function ํ‘œํ˜„
function addOld(a, b) {
  return a + b;
}

๐ŸŒŸ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด (Template Literal)

  • ๋ฌธ์ž์—ด์„ ๋ฐฑํ‹ฑ(`)์œผ๋กœ ๊ฐ์‹ธ๊ณ  ${}๋กœ ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹์„ ๋ฐ”๋กœ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ(+) ๋ฐฉ์‹๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ, ์ค„๋ฐ”๊ฟˆ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
const name = "ํ˜„์ง„";
console.log(`์•ˆ๋…•ํ•˜์„ธ์š”, ${name}๋‹˜!`); // ์•ˆ๋…•ํ•˜์„ธ์š”, ํ˜„์ง„๋‹˜!

๐ŸŒŸ ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง (Destructuring)

  • ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์—์„œ ํ•„์š”ํ•œ ๊ฐ’๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•
  • ๋ณ€์ˆ˜๋ฅผ ํ•œ ์ค„๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง
// ๋ฐฐ์—ด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง
const [a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2

// ๊ฐ์ฒด ๋””์ŠคํŠธ๋Ÿญ์ฒ˜๋ง
const { name, age } = { name: "ํ˜„์ง„", age: 25 };
console.log(name); // ํ˜„์ง„
console.log(age); // 25

๐ŸŒŸ ๊ธฐ๋ณธ ํŒŒ๋ผ๋ฏธํ„ฐ (Default Parameter)

  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์ธ์ž๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•จ
  • ์กฐ๊ฑด๋ฌธ(if)์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋˜ ๋กœ์ง์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Œ
function greet(name = "์ต๋ช…") {
  console.log(`์•ˆ๋…•ํ•˜์„ธ์š”, ${name}๋‹˜!`);
}

greet(); // ์•ˆ๋…•ํ•˜์„ธ์š”, ์ต๋ช…๋‹˜!

๐ŸŒŸ ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž (Spread Operator)

  • ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํŽผ์น˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•จ
  • ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด React ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋จ
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // [1, 2, 3, 4, 5]

const user = { name: "ํ˜„์ง„", age: 25 };
const newUser = { ...user, age: 26 }; // { name: "ํ˜„์ง„", age: 26 }

0๊ฐœ์˜ ๋Œ“๊ธ€