์ƒˆ์†Œ์‹

Languages/Java Script

ECMAScript6 | ES6 | let & const | Block-scope | Temprol Dead Zone

  • -
๋ฐ˜์‘ํ˜•

๋ชจ๋“  ํฌ์ŠคํŒ…์€ ์ธํ”„๋Ÿฐ ECMAScript6: ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šฐ๋Š” ES6 ์Šคํ‚ฌ๊ณผ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋žจ ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ

์ถœ์ฒ˜๋Š” ์•„๋ž˜์˜ ์ฃผ์†Œ๋กœ "๊น€ํ˜•ํƒœ"๋‹˜์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. 

์ƒ์—…์ ์ธ ์˜๋„๊ฐ€ ์•„๋‹Œ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋†“๋Š” ๋ชฉ์ ์œผ๋กœ ํฌ์ŠคํŒ… ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

www.inflearn.com/course/es6-ecmascript-6

 

ECMAScript 6: ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šฐ๋Š” ES6 ์Šคํ‚ฌ๊ณผ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์ธํ”„๋Ÿฐ

๋น„๋™๊ธฐ ํ™˜๊ฒฝ์—์„œ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ES6์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์Šคํ‚ฌ์„ ํ–ฅ์ƒ์‹œ์ผœ ๋ณด์„ธ์š”. ์ดˆ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ES6 ์˜จ๋ผ์ธ ๊ฐ•์˜ abcdefghijk

www.inflearn.com


1. ECMA Script

 

#ECMAScript

- Core ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

- ๊ฐ์ฒด ํƒ€์ž… ํ‚ค์›Œ๋“œ ์—ฐ์‚ฐ์ž ๋“ฑ ์–ธ์–ด์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๋ถ€๋ถ„์ž„.

- ๋ธŒ๋ผ์šฐ์ € ๋ฟ ์•„๋‹ˆ๋ผ node.js๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค.

 

#JavaScript

- ECMAScript

- Document ObjectModel

- Brower Object Model

์œ„ ์„ธ๊ฐ€์ง€ ์š”์†Œ๊ฐ€ Javascrip๊ฐ€ Brower์—์„œ ์‚ฌ์šฉ๋  ๋•Œ ํ•„์š”ํ•œ ์š”์†Œ์ด๋‹ค.

 

#ECMS(European Computer Manufacturers Assciation) Script ํ‘œ์ค€

Javascript์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๊ณ , ํ‘œ์ค€ ๊ทœ๊ฒฉ ํ•„์š”ํ•ด์กŒ๋‹ค. ์ด ํ‘œ์ค€ ๊ทœ๊ฒฉ์ด ๋ฐ”๋กœ ECMS Script ํ‘œ์ค€์ด๋‹ค.

์ตœ๊ทผ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ ๋„์ž…ํ•˜๊ณ  ์žˆ๋Š” TypeScript๋„ ECMAํ‘œ์ค€์„ ๋”ฐ๋ฅธ๋‹ค.

 

 

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ์ œ๋„ˆ๋ ˆ์ดํ„ฐ, ํ”„๋กœ๋ฏธ์Šค, ํด๋ž˜์Šค, ๋ชจ๋“ˆ ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์œ ์šฉํ•œ ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ ๋” ๋‚˜์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ชจ์Šต์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ES6์˜ ์ถœ์‹œ๋กœ ์–ธ์–ด์  ํ•œ๊ณ„๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ, ES6๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์ง€์›ํ•œ๋‹ค.

 

 

2. let & const

์œ„ ๊ฐœ๋…๋“ค์„ ์ดํ•ดํ•˜๊ธฐ์— ์•ž์„œ Javascript์— scope, hoisting, excution context์— ๋Œ€ํ•ด ์•Œ๊ณ ๊ฐ€์ž.

 

#scope (์œ ํšจ๋ฒ”์œ„)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์œ ํšจ๋ฒ”์œ„๋Š” ์–ด๋Š ๋ฒ”์œ„๊นŒ์ง€ ์ฐธ์กฐํ•˜๋Š” ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

์ฆ‰ "๋ณ€์ˆ˜์™€ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ ‘๊ทผ์„ฑ๊ณผ ์ƒ์กด๊ธฐ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค."

lucete1230-cyberpolice.tistory.com/348

 

[Js] ํ•จ์ˆ˜์ง€ํ–ฅ | javascript ํ•จ์ˆ˜ | ์œ ํšจ๋ฒ”์œ„ | ์ง€์—ญ๋ณ€์ˆ˜ ์ „์—ญ๋ณ€์ˆ˜

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

lucete1230-cyberpolice.tistory.com

์œ„ ์ฃผ์†Œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ scope์˜ ๊ฐœ๋…์„ ์ตํžˆ๋„๋ก ํ•˜์ž.

 

์œ ํšจ๋ฒ”์œ„๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์ „์—ญ ์œ ํšจ๋ฒ”์œ„ (Global Scope)
2. ์ง€์—ญ ์œ ํšจ๋ฒ”์œ„(Local Scope)

 

#hoisting

ํ˜ธ์ด์ŠคํŒ…์€ ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ์„ ์–ธ๋“ค์„ ๋ชจ๋‘ ๋Œ์–ด์˜ฌ๋ ค์„œ, ํ•ด๋‹น ํ•จ์ˆ˜ ์œ ํšจ ๋ฒ”์œ„์˜ ์ตœ์ƒ๋‹จ์— ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

์ด๋Š”, var ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ๋งŒ ์ผ์–ด๋‚˜๋ฉฐ, ํ• ๋‹น์€ ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค.

gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html

 

[JavaScript] ํ˜ธ์ด์ŠคํŒ…(Hoisting)์ด๋ž€ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

์œ„ ๋ธ”๋กœ๊ทธ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

#excution context

์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ตฌ์—ญ๊ณผ ๋ฒ”์œ„์˜.๋Œ€ํ•œ ๊ฐœ๋…์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด excution context ๋‚ด๋ถ€์—์„œ ์‹คํ–‰์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

velog.io/@stampid/Execution-Context์‹คํ–‰-์ปจํ…์ŠคํŠธ๋ž€

 

Execution Context(์‹คํ–‰ ์ปจํ…์ŠคํŠธ)๋ž€?

์‹คํ–‰ ์ปจํ…์ŠคํŠธ(Execution Context) ์‹คํ–‰ ์ปจํ…์ŠคํŠธ(Execution Context)๋ž€ ? ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํ˜•์ƒํ™”ํ•˜๊ณ  ๊ตฌ๋ถ„ํ•˜๋Š” ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ด๋ผ๊ณ  ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์ด๋ผ

velog.io

์œ„ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด let๊ณผ const๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž!

 

es5์—์„œ๋Š” ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ var ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์„ ์–ธํ•˜์˜€๋‹ค.

es6์—์„œ๋Š” ์ด ๋‘˜์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

์›์‹œํ˜•์—์„œ ๋ณ€์ˆ˜๋Š” let, ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ์ƒ์ˆ˜๋Š” const์„ ์–ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

# let ๊ณผ const

- ES6ํ‘œ์ค€์—์„œ ์ฒ˜์Œ์œผ๋กœ ์ถ”๊ฐ€๋œ ํŠน์ง•

- ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜ ๊ตฌ๋ถ„์ž

- let ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๋‹ค์‹œ ์„ ์–ธ ๋ถˆ๊ฐ€

- const๋Š” ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊ธฐํ™” ํ•„์ˆ˜, ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ.

 

๋‘ ์„ ์–ธ์ž๋Š” ์ด๋ฏธ ์„ ์–ธ๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์‹œ ์„ ์–ธํ•  ์ˆ˜ ์—†๊ณ , ๊ตฌ๋ฌธ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.const๋ณ€์ˆ˜๊ฐ€ ์ฐธ์กฐํ˜•์ธ ๊ฒฝ์šฐ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

3. Block-scope

 

- Block-scope : {} ๋กœ ๊ฐ์‹ธ์ง„ ์œ ํšจ๋ฒ”์œ„

- ๊ธฐ์กด์˜ var๋Š” function scope ๋ ˆ๋ฒจ hoisting

- let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๋ฅผ ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

let์„ ์–ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด:
๊ฒฐ๊ณผ๋Š” ๋‘๋ฒˆ ๋‹ค tv๊ฐ€ ๋‚˜์˜จ๋‹ค
์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ง€์—ญ ์Šค์ฝ”ํ”„์— ์„ ์–ธ๋œ product๊ฐ€ ํ˜ธ์ด์ŠคํŒ… ๋˜์–ด, ์ „์—ญ ์Šค์ฝ”ํ”„์— ์„ ์–ธ๋œ product ๊ฐ’์„ ๋ฐ”๊ฟ” ๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด let ์„ ์–ธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธ”๋ก ์Šค์ฝ”ํ”„์™€ ์ „์—ญ ์Šค์ฝ”ํ”„๋กœ ๋‘ ๋ณ€์ˆ˜๊ฐ€ ๋ถ„๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
๊ฒฐ๊ณผ๋Š” tv, phone์ด ๋‚˜์˜จ๋‹ค.

 

4. Temporal Dead Zone

- let, const๋Š” TDZ์— ์˜ํ•ด ์ œ์•ฝ๋œ๋‹ค.

 

let์€ var์™€ ๋‹ฌ๋ฆฌ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ์ „์— ์ ‘๊ทผํ•˜๋ฉด ์ฐธ์กฐ์—๋Ÿฌ(reference error)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

var๋Š” ์„ ์–ธ๋™์‹œ์— ์ดˆ๊ธฐํ™” ๋˜์ง€๋งŒ, let์€ ๋จผ์ € ๋ณ€์ˆ˜๊ฐ€ ์Šค์ฝ”ํ”„์— ์„ ์–ธ๋˜์ง€๋งŒ, ์ดˆ๊ธฐํ™”๊ฐ€ ํ•œ๋ฒˆ์— ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๊ณ  ์„ ์–ธ๋ฌธ์— ๋„๋‹ฌํ•ด์•ผ ์ด๋ฃจ์–ด ์ง„๋‹ค.

 

์ด์ฒ˜๋Ÿผ let์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋˜๊ธฐ ์ „์— ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์—†๋Š” ๊ตฌ์—ญ์„ "TDZ(temporal dead zone)"๋ผ๊ณ  ํ•œ๋‹ค.

 

 

5. ์ •๋ฆฌํ•˜๊ธฐ

- let์€ ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„๊ฐ€ ๋ธ”๋ก์Šค์ฝ”ํ”„

- ์›์‹œํ˜• ๋ณ€์ˆ˜๋Š” let, ์ƒ์ˆ˜๋Š” const

- ์ฐธ์กฐํ˜•์€ const

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.