whatisthis?
javaScript. const, let (var๊ณผ์ ์ฐจ์ด์ ) ๋ณธ๋ฌธ
๐ const, let
ES2015(ES6)์์ ๋ฐ๋ ๊ฐ์ฅ ํฐ ์ฐจ์ด ์ค ํ๋๋ก,
๋ณ์๋ฅผ ์ ์ธํ ๋, var ์ธ์๋ const(constant, ์์)์ let์ด ์๊ธฐ๊ฒ ๋์๋ค.
- ๊ธฐ์กด var๊ณผ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ 'ํจ์์ค์ฝํ'๋ฅผ ๋ฐ๋ฅด์ง ์๊ณ '๋ธ๋ก์ค์ฝํ'๋ฅผ ๋ฐ๋ฅธ๋ค๋ ๊ฒ์ด๋ค.
ํจ์์ค์ฝํ์ ๋ํ ๋ด์ฉ์ ์๋ ํฌ์คํ ์ ์ ๋ฆฌํด๋์๋ค.
๐ก ์ฃผ์! ์ค์ฝํ๋ 'ํธ์ถ'ํ ๋๊ฐ ์๋๋ผ '์ ์ธ'ํ ๋ ์๊น. (์๊ธฐ ์ค์ฝํ ์์๋ฒ์์์ ์ฐธ์กฐ)
๐ ๋ธ๋ก์ค์ฝํ
ํด๋น ๋ณ์๋ฅผ ํด๋น ๋ธ๋ก์์๋ง ์ ๊ทผ ๊ฐ๋ฅ.
- ๋ธ๋ก(block)์ด๋ ๋ณดํต if {} ๋ฑ์ ์ค๊ดํธ ์์ ์๋ฏธํจ.
** ๋ธ๋ก๋ฌธ(block) = ๋ณตํฉ๋ฌธ. 0๊ฐ ์ด์์ ๊ตฌ๋ฌธ์ ๋ฌถ์ ๋ ์ฌ์ฉ. ํ ์์ ์ค๊ดํธ๋ก ๊ตฌ์ฑํจ. |
if (true) {
var x = 3;
}
console.log(x); // 3
์ ์์ ์์๋ var์ด ํจ์์ค์ฝํ๋ฅผ ๋ฐ๋ฅด๋ฏ๋ก
if๋ธ๋ก๊ณผ ์๊ด์์ด ์ ๊ทผํ ์ ์๋ค.
if (true) {
const y = 3;
}
console.log(y); // Uncaught ReferenceError: y is not defined
๊ทธ๋ฌ๋ ์ ์์ ๋ const๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ๋ธ๋ก์์๋ง ๋ณ์์ ์ ๊ทผํ ์ ์๋ค.
var์ ํธ์ด์คํ (hoisting) ๋๋ฌธ์ ์ฝ๋ฉ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค.
-> ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ๋ ์ ์ ํด๋น ๋ณ์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋, const์ let์ ์ ์ธํ๊ธฐ ์ ์ ์ ๊ทผํ๋ ๊ฒ์ด ๊ธ์ง๋๋ค. >> ์๋ฌ ๋ฐ์
const์ let์๋ ํธ์ด์คํ ์ด ๋ฐ์ํ์ง๋ง, var๊ณผ๋ ๋ค๋ฅด๊ฒ ๋์ํ๋ฉฐ
TDZ(Temporal Dead Zone)์ด๋ผ๋ ํ์์ ๊ฐ๊ณ ์๋ค.
var m = 1;
console.log(window.m); // 1
const n = 2;
console.log(window.n); // undefined
๋ํ, var๊ณผ๋ ๋ค๋ฅด๊ฒ ์ ์ญ์ค์ฝํ์์ ์ ์ธ ์ window๋ global์ ๋ฑ๋ก๋์ง ์๋๋ค.
<์ ๋ฆฌ>
1. const์ let์ ๋ธ๋ก์ค์ฝํ๋ฅผ ๋ฐ๋ฅธ๋ค.
2. ์ ์ธํ๊ธฐ ์ ์ ์ ๊ทผํ ์ ์๊ฒ ๋ง์๋์๋ค. (ํธ์ด์คํ )
3. ์ ์ญ์ค์ฝํ์์ ์ ์ธ์ window๋ global์ ๋ฑ๋ก๋์ง ์๋๋ค.
๐ const vs. let
const | ํ ๋ฒ ์ด๊ธฐํ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐํจ. (๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ๊ณ ์ ์ํด) โ ์ฃผ์ > const์ ํ ๋น๋ ๊ฐ์ฒดor๋ฐฐ์ด์ ์์๊ฐ ๋ฐ๋๋ ๊ฒ์ ๋ง์ง ๋ชปํจ. ์ฆ, '='์ ํตํ ๋์ ๋ง ๋ง์. |
let | ๊ณ์ ๊ฐ์ ๋ฐ๊ฟ์ค ์ ์์. |
๐ ์ด์ var์ ์ฌ์ฉํ์ง๋ง์. var์ ๊ธฐ๋ฅ์ let์ด ๋ค ํ๋ค!
REFERENCE
https://www.zerocho.com/category/ECMAScript/post/5757d74345041aaae7493479
์ด ํฌ์คํ ์ zerocho๋์ javascript ๊ฐ์๋ฅผ ๋ณด๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ณต๋ถ+๊ธฐ๋ก ์ฉ์ผ๋ก ์์ฑํ ๊ฒ์ด๋ฉฐ, ์์ธํ ๊ฒ์ ์ ํฌ์คํ ์ ์ฐธ๊ณ ํ์ธ์!
'WEB STUDY > JAVASCRIPT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javaScript. ํจ์ ๋ฐ์ธ๋ฉ๊ณผ bind() ๋ฉ์๋ (0) | 2022.01.14 |
---|---|
javaScript. ES2015 - Object(๊ฐ์ฒด) (0) | 2022.01.14 |
javaScript. ์ด๋ฒคํธ ๋ฃจํ (Event Loop) (0) | 2022.01.11 |
javaScript. ํธ์ถ ์คํ (0) | 2022.01.11 |
javaScript. ํด๋ก์ (Closure) (1) | 2022.01.11 |