ํ‚ํ‚์ž‰ 2025. 5. 29. 17:06

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

 

๐Ÿง  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 ๊ฐ™์€ ์• ๋“ค์ด ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ทธ๋ƒฅ ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๋ˆ„๊ตฐ๊ฐ€ ๋จธ๋ฆฌ ์‹ธ๋งค์„œ ์„ค๊ณ„ํ•˜๊ณ , ๋‹ค์ˆ˜์˜ ๊ธฐ์—…๊ณผ ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ทธ๊ฑธ ํ•ฉ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ตฌ์กฐ๋ผ๋Š” ๊ฑธ ์ดํ•ดํ•˜๋‹ˆ๊นŒ ์ด ์–ธ์–ด๊ฐ€ ๋” ํฅ๋ฏธ๋กญ๊ฒŒ ๋А๊ปด์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค...

 

 

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

 

๋Œ“๊ธ€์ˆ˜0