๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ECMA Script(ES) ๋ฌธ๋ฒ•

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2023. 12. 10.

JavaScript ํ‘œ์ค€์ธ ECMAScript์—์„œ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณด๋‹ค ํŽธ๋ฆฌํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์„ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ์žˆ๋‹ค.

์ƒˆ๋กœ์šด ๋ฒ„์ „ ๋ช…์€ ES5, ES6~ ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ๋„ ํ•˜๊ณ , ํ•ด๋‹น ์—ฐ๋„๋ฅผ ๋œปํ•˜๋Š” ES2015, ES2016์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

ES6์™€ ES2015๊ฐ€ ๋™์ผํ•œ ๋ฒ„์ „์˜ ๋‹ค๋ฅธ ํ‘œ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ˜„์žฌ๋Š” ES2023๊นŒ์ง€ ๋‚˜์˜จ์ƒํƒœ

 

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ES๋ฌธ๋ฒ•

Spread Operator - ์ „๊ฐœ ์—ฐ์‚ฐ์ž(ES6, ES2015~)

์ฃผ๋กœ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉํ•œ๋‹ค.

ex) ์›๋ณธ ๋ฐฐ์—ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ ๋ฐ ๋ฐฐ์—ด ๋‚ด ์š”์†Œ๋“ค์„ ํ’€์–ด๋‚ด๊ณ ์ž ํ•  ๋•Œ

1
2
const cookies = ['์ดˆ์ฝ”''์˜ค๋ Œ์ง€'];
const newCookies = ['๋ฐ”๋‹๋ผ', ...cookies, 'ํฌ๋„']; // ['๋ฐ”๋‹๋ผ', '์ดˆ์ฝ”', '์˜ค๋ Œ์ง€', 'ํฌ๋„'];
cs

 

Destructuring assignment - ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(ES6~)

ํŒŒ์ด์ฌ์˜ Unpacking๊ณผ ๋น„์Šทํ•œ ๋ฌธ๋ฒ•

ํŠน์ • ๊ฐ์ฒด(ex, ๋ฐฐ์—ด, ๊ฐ์ฒด ๋“ฑ)์˜ ๊ตฌ์กฐ(Structure)๋ฅผ ๋ถ„ํ•ดํ•˜์—ฌ ๋…๋ฆฝ๋œ ์š”์†Œ๋“ค๋กœ ๋ชจ์€ ํ›„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋“ค์— ํ• ๋‹นํ•œ๋‹ค๋Š” ์˜๋ฏธ

de(๋ฐ˜์˜์–ด) structuring : ๊ตฌ์กฐ๋ฅผ ๊นจ๋‹ค

๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น:

  • ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋ณ€์ˆ˜๋กœ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์†์„ฑ์˜ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„ํ•ดํ•˜๋ฉฐ, ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์›ํ•˜๋Š” ์†์„ฑ ์ด๋ฆ„์„ ์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๊ฐ์ฒด์˜ ์†์„ฑ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•˜์ง€๋งŒ, :๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

1
2
javascriptCopy code
const person = { name'John', age: 30 }; 
const { name, age } = person; // 'name'๊ณผ 'age' ์†์„ฑ์„ ์ถ”์ถœ console.log(name); // John console.log(age); // 
cs

๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น:

  • ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ๋ณ€์ˆ˜๋กœ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์š”์†Œ์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ถ„ํ•ดํ•˜๋ฉฐ, ์ด๋ฆ„์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์›ํ•˜๋Š” ์š”์†Œ์˜ ์œ„์น˜๋ฅผ ๋Œ€๊ด„ํ˜ธ [] ์•ˆ์— ์ˆœ์„œ๋Œ€๋กœ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ณ€์ˆ˜์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

1
2
javascriptCopy code
const numbers = [123]; 
const [first, second] = numbers; // ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ถ”์ถœ console.log(first); // 1 console.log(second); //
cs

์š”์•ฝ:

  • ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด: ์†์„ฑ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ˆœ์„œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด: ์š”์†Œ์˜ ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ด๋ฆ„์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ฐจ์ด์ ์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

Optional chaining - ์˜ต์…”๋„ ์ฒด์ด๋‹(ES11, ES2020 ~)

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ . ๋ฅผ ํ™œ์šฉํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ํ”„๋กœํผํ‹ฐ๊ฐ€ null์ผ ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์—๋Ÿฌ ๋ฐฉ์ƒ ๋Œ€์‹ ์— ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜๋‹ค๋Š” undefined๋กœ ๋ฐ˜ํ™˜์‹œ์ผœ์„œ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

-> ์ฆ‰, ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ์–ด๋–ค ๊ฐ’์ด ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ

1
2
3
4
5
6
7
8
9
const user = {
  name'Alice',
  cellphone: {
        number: '010-5555-5555',
    }
};
 
const homePhones = user?.homePhones;
console.log(homePhones);
cs

'๊ฐœ๋ฐœ ์ง€์‹, ์Šคํฌ๋ฆฝํŠธ > JavaScript, TS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

State  (0) 2023.12.19
Props, Properties  (1) 2023.12.19
Promise- ํ›„์† ์ฒ˜๋ฆฌ์™€ ์ฒด์ด๋‹(Chaining)  (0) 2023.12.10
Promise ๊ฐ์ฒด์˜ ์ƒํƒœ  (0) 2023.12.10
Promise  (0) 2023.12.10

๋Œ“๊ธ€