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์ ์ธ์๋ฅผ ์ฌ์ฉํ๋ ์์๋ฅผ ๋ค์ด๋ณด์๋ฉด:์ ์ฝ๋์ฒ๋ผ ์ง์ญ ์ค์ฝํ์ ์ ์ธ๋ product๊ฐ ํธ์ด์คํ ๋์ด, ์ ์ญ ์ค์ฝํ์ ์ ์ธ๋ product ๊ฐ์ ๋ฐ๊ฟ ๋ฒ๋ฆฌ๋ ํ์์ด ๋ฐ์ํ๋ค. ๊ฒฐ๊ณผ๋ ๋๋ฒ ๋ค tv๊ฐ ๋์จ๋ค
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 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
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Arrow Function & this | IIFE | Default Parameter (0) | 2021.02.15 |
---|---|
Template Literals | Destructuring | class (0) | 2021.02.15 |
[Js] ํ์ฉ | youtube ์ฌ์์๊ฐ ๊ตฌํ๊ธฐ | ์ํ์ฝ๋ฉ javascript (0) | 2021.02.10 |
[Js] jQuery Ajax | javascript (0) | 2021.02.10 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค