๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ ์•Œ์“ธ ์ง€์‹/์•Œ์•„๋‘๋ฉด ์ข‹์„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋ถ™๋Š” ๋‹จ์–ด๊ฐ€ ๊ถ๊ธˆํ•ด - '๋ชจ๋˜' ํŽธ

by Dev. Ella 2023. 9. 15.

๋“ค์–ด๊ฐ€๋ฉฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด๋ผ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ž์— ๋ถ™๋Š” ์ˆ˜์‹์–ด์ธ '๋ชจ๋˜'์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•  ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ฐœ์ž๋“ค์€ ๋„ˆ๋ฌด๋‚˜๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” '๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ' ๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

 

์ผ๋ฐ˜์ ์ธ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜๋ฏธ

๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€, ECMAScript6(2015) ์ดํ›„์˜ ๋ฐฉ๋ฒ•๋ก ์„ ๊ตฌํ˜„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‹ค.

 

ํ•œ๋งˆ๋””๋กœ ์ •์˜ํ•˜์ž๋ฉด, ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ '๋ชจ๋˜'์€ ํ˜„์žฌ์˜ ๊ฐœ๋ฐœ ํ‘œ์ค€๊ณผ ๊ด€ํ–‰์„ ๋”ฐ๋ฅด๋ฉฐ, ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ๊ฐœ๋ฐœ ๋„๊ตฌ์—์„œ ์ง€์›๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „ ๋ฐ ๊ธฐ์ˆ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด๋Š” ECMAScript 6 (ES6) ์ดํ›„์˜ ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ๋œ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์„ ํฌํ•จํ•œ๋‹ค.

 

ํ•„์ž๊ฐ€ ์ด์ „์— ์ž‘์„ฑํ•œ <์•Œ์•„๋‘๋ฉด ์žฌ๋ฏธ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ>๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ทธ๊ฐ„ ์—ญ์‚ฌ์—์„œ ES6๋ฅผ ๋นผ๋†“๊ณ  ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๊ต‰์žฅํžˆ ๋งŽ์€ ๋ฐœ์ „์ด ์žˆ์—ˆ๋‹ค. ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ธฐ์ ์œผ๋กœ 'modern'์ด๋ผ๋Š” ์šฉ์–ด๊นŒ์ง€ ์ƒ๊ธด ๊ฒƒ์ด๋‹ค.

 

๋”๋ถˆ์–ด, ES5(2009)์™€ ES6(2015) ์ถœํŒ ์‹œ๊ธฐ ๊ฐ„์˜ ๊ฐ„๊ทน์ด ํฌ๊ธฐ๋„ ํ•ด์„œ, ๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋น„๊ณต์‹์ ์œผ๋กœ ES6์™€ ๊ทธ ์ดํ›„์˜ ํŒ์„ ๊ตฌํ˜„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ '๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ'๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ–ˆ๋‹ค. 

 

modern์˜ ์‚ฌ์ „์  ์˜๋ฏธ

 

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

 

๋ฌผ๋ก  ES7, ES8 ๋ฐ ์ดํ›„์˜ ECMAScript ๋ฒ„์ „์— ์†ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ES7, ES8, ๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์ค‘์˜ ๋ฒ„์ „์€ ํ‘œ์ค€ ECMAScript ์ŠคํŽ™์˜ ์ผ๋ถ€๋กœ์„œ ๋ธŒ๋ผ์šฐ์ €์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ์ง€์›ํ•  ๋•Œ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ผ๋ถ€๋กœ ๊ฐ„์ฃผ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋ชจ๋“  ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ๊ณผ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ํŠน์ • ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณผ์—ฐ, ๋ชจ๋˜ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

์ด ์˜๋ฌธ์— ๋Œ€ํ•ด ๊ตฌ๊ธ€์ด ๋‚˜์„œ์„œ ์‹œ์›ํ•˜๊ฒŒ ๋‹ต์„ ํ•ด์ค€๋‹ค.

 

 

๊ตฌ๊ธ€์ด ์ •์˜ํ•˜๋Š” ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜๋ฏธ

๋งˆ์นจ, 2020 Google Chrome Dev Summit์—์„œ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋‚ด๋ ธ๋Š”๋ฐ ํฅ๋ฏธ๋กœ์›Œ ๊ฐ€์ ธ์™€ ๋ณด์•˜๋‹ค. ์ด๋“ค์ด ๋งํ•˜๋Š” ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€, ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

Modern JavaScript๋ž€, ๋ชจ๋“  ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋œ JavaScript ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

์œ„ ์˜์ƒ์—์„œ ๋งํ•˜๋Š” ๋ชจ๋˜ํ•œ ๋ธŒ๋ผ์šฐ์ €๋ž€, ์‹œ์žฅ ์ ์œ ์œจ ์•ฝ 90%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” Chrome, Firefox, Safari, Edge์™€ 5%๋ฅผ ์ฐจ์ง€ํ•˜๋Š” Opera, ์‚ผ์„ฑ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํฌํ•จํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ ์œ„ 95%์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ES8(2017)์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. 

 

 

์ถ”๊ฐ€์ ์œผ๋กœ, ์˜์ƒ์—์„œ Block Scoping(ES2015), ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น(ES2015), Spread Syntax(ES2015) ๋“ฑ ๊ฐ ๋ฌธ๋ฒ•๋“ค์˜ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์œจ์„ ์•Œ๋ ค์ฃผ๋‹ˆ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์˜์ƒ์„ ๋ด๋„ ์ข‹๋‹ค.

 

 

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

'๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ'๋ผ๋Š” ๋‹จ์–ด๋Š” ๊ทธ์ € '์•„ ์ตœ์‹ ํŒ์ด๊ตฌ๋‚˜~' ํ•˜๊ณ  ๋„˜๊ธธ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๋Š” ๋ฒ•์ ์œผ๋กœ(?) ์ •์˜๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ ์‚ฌ๋žŒ๋“ค๋งˆ๋‹ค ํ•ด์„์ด ๊ฐ๊ธฐ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋“ค์€ ์™œ, ์–ด๋–ค ๋งฅ๋ฝ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•ด์„ํ•˜๋Š”์ง€ ์ด์œ ๋ฅผ ์•Œ๋ฉด ๋” ์žฌ๋ฐŒ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ฐœ์ธ์ ์œผ๋กœ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ •์˜๋Š” ๊ตฌ๊ธ€์ด ๋‚ด๋ฆฐ ์ •์˜๊ฐ€ ๋” ์™€๋‹ฟ๋Š”๋‹ค. ์•„๋ฌด๋ฆฌ newest ์ตœ์‹ ํŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์ด๋ผ๋„, ์ ์šฉ๋˜์ง€ ์•Š์œผ๋ฉด ์“ธ๋ชจ๊ฐ€ ์žˆ์„๊นŒ ์‹ถ๋‹ค. ๊ฒฐ๊ตญ ์‚ฌ์šฉ์ž์™€ ๋งž๋‹ฟ์•„์žˆ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ง€์›์ด ๋˜์–ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ ๋ฐ ์ ์šฉ๋˜์–ด์•ผ ์ง„์งœ ๋ชจ๋˜ํ•œ ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

 

๋‹ค์Œ์—๋Š” '๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ'์˜ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ด๋ฉฐ, ์–ด๋–ค ๋งฅ๋ฝ์—์„œ ํ•ด์„๋˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

 

 

 

๐Ÿ“Ž ๋‚ด์šฉ ์ฐธ์กฐ

- Medium(Bora Lee) : ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

Youtube(Google Chrome Developers) : Transitioning to modern JavaScript

๋Œ“๊ธ€