ECMAScript์™€ JavaScript ํ‘œ์ค€ํ™”

2025. 5. 29. 17:06ยท๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ‘œ์ค€ํ™”๋˜๊ณ  ์žˆ์„๊นŒ?

 

๐Ÿง  ECMAScript๋Š” ๋ฌด์—‡์ธ๊ฐ€?

ECMAScript๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€ ๋ช…์„ธ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜์Œ ๋งŒ๋“ค์–ด์กŒ์ง€๋งŒ, ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๊ตฌํ˜„ ๋ฐฉ์‹์ด ์กฐ๊ธˆ์”ฉ ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ†ต์ผํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์–ธ์–ด์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๋ช…์„ธ๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , ์ด๊ฒŒ ๋ฐ”๋กœ ECMAScript๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ = ECMAScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์–ธ์–ด ๊ตฌํ˜„์ฒด๋‹ค.
  • ECMAScript๋Š” ๋ฌธ๋ฒ•, ํƒ€์ž…, ํ‚ค์›Œ๋“œ, ์—ฐ์‚ฐ์ž, ๋‚ด์žฅ ๊ฐ์ฒด ๋“ฑ ํ•ต์‹ฌ ๊ทœ์น™์„ ์ •์˜ํ•œ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์™ธ์—๋„ ActionScript(ํ”Œ๋ž˜์‹œ์—์„œ ์“ฐ๋˜ ์–ธ์–ด)๋„ ECMAScript๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๐Ÿ› ๋ˆ„๊ฐ€ ํ‘œ์ค€์„ ์ •ํ•˜๋Š”๊ฐ€?

ํ‘œ์ค€์€ TC39(Technical Committee 39)๋ผ๋Š” ์œ„์›ํšŒ๊ฐ€ ๋งŒ๋“ ๋‹ค.
์ด ์œ„์›ํšŒ๋Š” ECMA ์ธํ„ฐ๋‚ด์…”๋„์ด๋ผ๋Š” ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ ์‚ฐํ•˜์— ์žˆ๊ณ ,
๊ตฌ์„ฑ์›์€ ๊ตฌ๊ธ€, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ, ์• ํ”Œ, ๋ชจ์งˆ๋ผ ๊ฐ™์€ ํšŒ์‚ฌ๋“ค์ด๋‹ค.

TC39๋Š” ๋งค๋…„ ๋ช‡ ์ฐจ๋ก€ ํšŒ์˜๋ฅผ ์—ด๊ณ , ์ƒˆ๋กœ์šด ์ œ์•ˆ๋“ค์„ ๊ฒ€ํ† ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ช…์„ธ๋ฅผ ๊ฐœ์„ ํ•œ๋‹ค.
์ œ์•ˆ์€ ๋ˆ„๊ตฌ๋‚˜ ๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ‘œ์ค€์ด ๋˜๋ ค๋ฉด 5๋‹จ๊ณ„ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

 

๐Ÿšฆ TC39 ํ”„๋กœ์„ธ์Šค๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜?

ํ‘œ์ค€์ด ๋˜๊ธฐ๊นŒ์ง€๋Š” ์•„๋ž˜์˜ ๋‹จ๊ณ„๋ฅผ ๋ฐŸ๋Š”๋‹ค.

๋‹จ๊ณ„ ์„ค๋ช…

Stage 0 ์•„์ด๋””์–ด ์ œ์•ˆ. ์•„์ง ๊ทธ๋ƒฅ ์ƒ๊ฐ ์ˆ˜์ค€์ด๋‹ค.
Stage 1 ์ œ์•ˆ์„œ ์ž‘์„ฑ. ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€, ์•„์ด๋””์–ด์˜ ๋ฐฉํ–ฅ์„ฑ์ด ์„ค๋ช…๋œ๋‹ค.
Stage 2 ๋ช…์„ธ ์ดˆ์•ˆ. ๋ฌธ๋ฒ•์ด๋‚˜ ๋™์ž‘์ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ •์˜๋œ๋‹ค.
Stage 3 ์ตœ์ข… ๊ฒ€ํ† . ๊ตฌํ˜„์ฒด๊ฐ€ 2๊ฐœ ์ด์ƒ ๋‚˜์™€์•ผ ํ•˜๊ณ , ๋ช…์„ธ๊ฐ€ ๊ฑฐ์˜ ํ™•์ •๋œ๋‹ค.
Stage 4 ํ‘œ์ค€ ์ฑ„ํƒ. ECMAScript์— ๊ณต์‹์ ์œผ๋กœ ํฌํ•จ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด optional chaining (?.) ๊ฐ™์€ ๋ฌธ๋ฒ•๋„ Stage 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ Stage 4๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ„ ๋’ค ์ •์‹ ์ฑ„ํƒ๋œ ๊ธฐ๋Šฅ์ด๋‹ค.

 

๐Ÿ“ฆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋‚˜?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋งค๋…„ ํ•œ ๋ฒˆ์”ฉ ECMAScript ๋ช…์„ธ๊ฐ€ ์ƒˆ๋กœ ๋ฐœํ‘œ๋œ๋‹ค.
๋ณดํ†ต "ES2020", "ES2021"์ฒ˜๋Ÿผ ์—ฐ๋„๋กœ ๋ฒ„์ „์ด ๋ถ™๋Š”๋‹ค.

๊ฐ ๋ฒ„์ „์—๋Š” ๋‹ค์Œ ๊ฐ™์€ ๋ณ€ํ™”๊ฐ€ ๋‹ด๊ธด๋‹ค:

  • ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ• ์ถ”๊ฐ€ (์˜ˆ: ??, ?.)
  • ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด ๊ฐœ์„  (์˜ˆ: Array.prototype.at())
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ฐœ์„  (์˜ˆ: top-level await)

๐Ÿ’ก ์ฐธ๊ณ ๋กœ ์˜›๋‚ ์—๋Š” "ES6", "ES7"์ฒ˜๋Ÿผ ์ˆซ์ž ๋ฒ„์ „์œผ๋กœ ๋ถˆ๋ €์ง€๋งŒ, ES6 ์ดํ›„๋ถ€ํ„ฐ๋Š” ์—ฐ๋„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

 

๐Ÿงช ๋ˆ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋‚˜?

ECMAScript ๋ช…์„ธ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•ด์ฃผ๋Š” ๊ฑด ๊ฐ JS ์—”์ง„์˜ ์—ญํ• ์ด๋‹ค.

  • V8 (ํฌ๋กฌ, Node.js)
  • SpiderMonkey (ํŒŒ์ด์–ดํญ์Šค)
  • JavaScriptCore (์‚ฌํŒŒ๋ฆฌ)
  • Chakra (์˜›๋‚  Edge)

์ด ์—”์ง„๋“ค์ด TC39์˜ ๋ช…์„ธ๋ฅผ ๋ณด๊ณ  ์ง์ ‘ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.
๊ฐ ์—”์ง„์€ Stage 3๋‚˜ Stage 4 ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ์ ์ง„์ ์œผ๋กœ ๋„์ž…ํ•œ๋‹ค.


๐Ÿงพ ์™œ ์ด๊ฑธ ์•Œ์•„์•ผ ํ•˜์ง€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊นŠ์ด ์žˆ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,
์ด ์–ธ์–ด๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œ์ค€ํ™”๋˜๊ณ  ๋ฐœ์ „ํ•˜๋Š”์ง€ ๊ตฌ์กฐ๋ฅผ ์•„๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.

  • ์ง€๊ธˆ ์“ฐ๋Š” ๋ฌธ๋ฒ•์ด ์™œ ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์•„์ง ํ‘œ์ค€์ด ์•„๋‹Œ ์‹คํ—˜์  ๊ธฐ๋Šฅ๋„ ํ…Œ์ŠคํŠธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ตœ์‹  ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฒ˜์Œ์—” ECMAScript๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž‘ ๋ญ๊ฐ€ ๋‹ค๋ฅธ ๊ฑด์ง€ ๋ชฐ๋ž๋‹ค. ๊ทธ๋ƒฅ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์ด ์ƒ๊ธฐ๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ์ค„ ์•Œ์•˜๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ์•Œ๊ณ  ๋ณด๋‹ˆ, ์ง„์งœ ๋ฐ‘๋ฐ”๋‹ฅ์—๋Š” ๋ช…์„ธ๋ฅผ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ๊ณ , ๊ทธ๊ฑธ ํ•ด์„ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €๋ž‘ Node.js ๊ฐ™์€ ์• ๋“ค์ด ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ทธ๋ƒฅ ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๋ˆ„๊ตฐ๊ฐ€ ๋จธ๋ฆฌ ์‹ธ๋งค์„œ ์„ค๊ณ„ํ•˜๊ณ , ๋‹ค์ˆ˜์˜ ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทธ๊ฑธ ํ•ฉ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ตฌ์กฐ๋ผ๋Š” ๊ฑธ ์ดํ•ดํ•˜๋‹ˆ๊นŒ ์ด ์–ธ์–ด๊ฐ€ ๋” ํฅ๋ฏธ๋กญ๊ฒŒ ๋А๊ปด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค...

 

 

๐Ÿ”— ์ฐธ๊ณ  ๋งํฌ

  • ECMAScript ๊ณต์‹ ๋ช…์„ธ (ECMA-262)
  • TC39 GitHub
  • JavaScript ์ตœ์‹  ์ œ์•ˆ ์‚ดํŽด๋ณด๊ธฐ (tc39 proposals)

 

'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐ๋ธŒ์ฝ”์Šค] ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜์˜ ๊ฐœ๋…๊ณผ ์ปดํŒŒ์ผ ์–ธ์–ด์—์„œ์˜ ๋™์ž‘ ์›๋ฆฌ  (4) 2025.06.02
[๋ฐ๋ธŒ์ฝ”์Šค] ํ”„๋ก ํŠธ, ์–ด์ฉŒ๋ฉด ๋…ธ๋“œ ๋ฐฑ์—”๋“œ๊ฐ€ ๋  ๋‚ด๊ฐ€ ์ปดํŒŒ์ผ ์–ธ์–ด๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ   (1) 2025.06.02
nodejs ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (1) 2025.05.22
[๋ฐ๋ธŒ์ฝ”์Šค] ํ˜‘์—… ํˆด๊ณผ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•๋ก   (0) 2025.05.12
[๋ฐ๋ธŒ์ฝ”์Šค] ์ธ์ฆ/์ธ๊ฐ€ ์‹œ์Šคํ…œ ์ดํ•ด: ์ฟ ํ‚ค, ์„ธ์…˜, JWT์™€ ๋ณด์•ˆ ํฌ์ธํŠธ  (1) 2025.05.04
'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐ๋ธŒ์ฝ”์Šค] ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜์˜ ๊ฐœ๋…๊ณผ ์ปดํŒŒ์ผ ์–ธ์–ด์—์„œ์˜ ๋™์ž‘ ์›๋ฆฌ
  • [๋ฐ๋ธŒ์ฝ”์Šค] ํ”„๋ก ํŠธ, ์–ด์ฉŒ๋ฉด ๋…ธ๋“œ ๋ฐฑ์—”๋“œ๊ฐ€ ๋  ๋‚ด๊ฐ€ ์ปดํŒŒ์ผ ์–ธ์–ด๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ 
  • nodejs ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • [๋ฐ๋ธŒ์ฝ”์Šค] ํ˜‘์—… ํˆด๊ณผ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•๋ก 
ํ‚ํ‚์ž‰
ํ‚ํ‚์ž‰
๋ฟŒ๋ก ํŠธ ๊ฐœ๋ฐœ์ž(์ง€๋ง์ƒ)์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ
  • ํ‚ํ‚์ž‰
    monicx.dev
    ํ‚ํ‚์ž‰
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (173)
      • ๐Ÿ–ฅ๏ธdevelop (2)
        • Github (2)
        • Frontend (4)
        • Backend (5)
        • Mobile (0)
        • CS (0)
        • Three.js (0)
        • Docker (2)
      • ๐Ÿ“šbook (9)
        • npm Deep Dive (4)
      • ๐Ÿ“•review (33)
        • ์ฑ… (24)
        • ํ–‰์‚ฌ (1)
        • ํšŒ๊ณ  (2)
      • โญproject (5)
        • petiary (2)
        • ๆšŽ่ฉ  (0)
        • ์ธํ„ด (2)
      • ๐Ÿ˜ถ‍๐ŸŒซ๏ธalgorithm (0)
      • ๐Ÿ’กtips (1)
      • ๐Ÿ˜Ždaily (10)
      • ๐Ÿ•น๏ธgame (0)
      • ๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค (87)
        • TIL (61)
        • ํ”„๋กœ์ ํŠธ (18)
        • ํšŒ๊ณ  (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • ๋ฒจ๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํ‚ํ‚์ž‰
ECMAScript์™€ JavaScript ํ‘œ์ค€ํ™”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”