์๋ฐ์คํฌ๋ฆฝํธ์์ var๋ก ๋ณ์ ์ ์ธ์ด ๊ฐ๋ฅํ๋๋ฐ, ์ const์ let์ด ๋์์ผ๋ฉฐ ์ด ๋์ ์ฌ์ฉ์ ๊ถ์ฅํ ๊น?
์ด๋ฅผ ์ ํํ๊ฒ ์๊ธฐ ์ํด์๋, ๋ณ์์ ์ ์ธ ๋ฐ ํ ๋น ๊ณผ์ , ํธ์ด์คํ , ์ค์ฝํ๋ฅผ ์์์ผํ๋ค.
โ๏ธ๋ณ์
๋จผ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์. ๋ณ์(variable)๋ ํ๋์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ํ๋ณดํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์์ฒด ๋๋ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ณํ๊ธฐ ์ํด ๋ถ์ธ ์ด๋ฆ์ ๋งํ๋ค.
const myNumber = 23
// ๋ณ์๋ช
(์๋ณ์): myNumber
// ํด๋น ๊ฐ์ ์์น(๋ฉ๋ชจ๋ฆฌ ์ฃผ์): 0012CCGWH80
// ๋ณ์ ๊ฐ(์ ์ฅ๋ ๊ฐ): 23
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋งค๋์ง๋ ์ธ์ด(managed language)์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ดํ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ๊ฐ์ ์ ์ฅํ๊ณ ์ฐธ์กฐํ ํ์๊ฐ ์๊ณ ๋ณ์๋ฅผ ํตํด ์์ ํ๊ฒ ๊ฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๋ณ์๋ช (์๋ณ์)์ธ myNumber๋ ๋ณ์์ ๊ฐ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ธฐ์ตํ๊ณ ์๋ค. ๋ณ์๋ช ์ ์ฌ์ฉํ๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ณ์๋ช ๊ณผ ๋งคํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ๊ฑฐ๊ธฐ์ ์ ์ฅ๋ ๊ฐ(23)์ ๋ฐํํ๋ค.
์ด์ฒ๋ผ ๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ์ ํ ๋น(assignment, ๋์ , ์ ์ฅ)์ด๋ผ ํ๋ฉฐ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ์ฝ์ด ๋ค์ด๋ ๊ฒ์ ์ฐธ์กฐ(reference)๋ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณ์๋ช ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฆฌ๋ ๊ฒ์ ์ ์ธ(declaration)์ด๋ผ ํ๋ค.
โ๏ธ๋ณ์ ์ ์ธ
๋ณ์์ ์ ์ธ์ var, const, let ํค์๋๋ก ํ ์ ์์ผ๋ฉฐ, ES6์์ const์ let์ด ์ถ๊ฐ๋์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์ ์ ์ธ์ ์ ์ธ → ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ํ๋๋ค.
- ์ ์ธ ๋จ๊ณ: ๋ณ์๋ช ์ ๋ฑ๋กํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ณ์์ ์กด์ฌ๋ฅผ ์๋ฆฐ๋ค.
- ์ด๊ธฐํ ๋จ๊ณ: ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ๊ณ ์๋ฌต์ ์ผ๋ก undefined๋ฅผ ํ ๋นํด ์ด๊ธฐํํ๋ค.
var kmj
console.log(kmj) // output: undefined
var ํค์๋๋ฅผ ์ด์ฉํ ๋ณ์ ์ ์ธ์ ์ ์ธ ๋จ๊ณ์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ๋์์ ์งํ๋์ด, kmj์ ์๋ฌต์ ์ผ๋ก undefined๋ฅผ ํ ๋นํด ์ด๊ธฐํํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ฐ๋๋ก, console์ ๋จผ์ ์ฐ์ด๋ ๋ฐํ ๊ฐ์ด undefined๋ก ๋์จ๋ค.
console.log(kmj) // output: undefined
var kmj
์ด๋ ๋ณ์ ์ ์ธ์ด ๋ฐํ์์์ ๋๋ ๊ฒ์ด ์๋๋ผ, ๊ทธ ์ด์ ๋จ๊ณ์์ ๋จผ์ ์คํ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์์ค์ฝ๋๋ฅผ ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ์คํํ๊ธฐ์ ์์, ๋ณ์ ์ ์ธ์ ํฌํจํ ๋ชจ๋ ์ ์ธ๋ฌธ(ex. ๋ณ์ ์ ์ธ๋ฌธ, ํจ์ ์ ์ธ๋ฌธ ๋ฑ)์ ์ฐพ์๋ด ๋จผ์ ์คํํ๋ค. ์ฆ, ๋ณ์ ์ ์ธ์ด ์ด๋์ ์๋ ์๊ด์์ด ๋ค๋ฅธ ์ฝ๋๋ณด๋ค ๋จผ์ ์คํ๋๋ ํน์ง์ ํธ์ด์คํ (hoisting)์ด๋ผ ํ๋ค.
๋ณ์ ์ ์ธ ๋ฟ๋ง ์๋๋ผ, var, let, const, function, function*, class ํค์๋๋ฅผ ์ฌ์ฉํด ์ ์ธํ ๋ชจ๋ ์๋ณ์(๋ณ์, ํจ์, ํด๋์ค ๋ฑ)๋ ํธ์ด์คํ ์ด ๋๋ค.
โ๏ธ๋ณ์ ํ ๋น
๋ณ์์ ๊ฐ์ ํ ๋น ํ ๋์๋ ํ ๋น ์ฐ์ฐ์(=)๋ฅผ ์ฌ์ฉํ๋ค.
var kmj // ๋ณ์ ์ ์ธ
kmj = 'howdy-mj' // ๊ฐ์ ํ ๋น
var kmj = 'howdy-mj' // ๋ณ์ ์ ์ธ๊ณผ ํ ๋น
๋ณ์ ์ ์ธ๊ณผ ํ ๋น์ ํ๋์ ๋ฌธ(statement)์ผ๋ก ๋จ์ถ ํํํ ์ ์์ง๋ง, ๋ ๊ฐ์ ์คํ ์์ ์ด ๋ค๋ฅด๋ค. ๋ณ์ ์ ์ธ์ด ํธ์ด์คํ ๋์ด ๋ฐํ์ ์ด์ ์ ์คํ๋์ง๋ง, ๊ฐ์ ํ ๋น์ ์์ค์ฝ๋๊ฐ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๋ฐํ์์ ์คํ๋๋ค.
๋ฐ๋ผ์ ๋ณ์์ ํ ๋น๊ณผ console์ ์คํํ๋ ์์น์ ๋ฐ๋ผ ๋ฐํ๋๋ ๊ฐ์ด ๋ค๋ฅด๋ค.
console.log(kmj) // output: undefined
var kmj = 'howdy-mj'
console.log(kmj) // output: howdy-mj
kmj๋ผ๋ ๋ณ์์ ์๋ก์ด ๊ฐ์ ์ฌํ ๋นํ ์๋ ์๋ค.
console.log(kmj) // output: howdy-mj
kmj = 'mj'
console.log(kmj) // output: mj
์ฌํ ๋น์ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ผ๋ก, ๋ง์ฝ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ์ด๋ผ๋ฉด ์ด๋ ๋ณ์๊ฐ ์๋๋ผ ์์(constant)๋ผ ๋ถ๋ฅธ๋ค.
โ๏ธํจ์ ํธ์ด์คํ
์์์ function ํค์๋๋ก ์ ์ธํ ๋ชจ๋ ์๋ณ์๋ ํธ์ด์คํ ์ด ๋๋ค๊ณ ํ๋๋ฐ, ์ ํํ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๊น?
๋จผ์ ํจ์๊ฐ ์ ์๋๋ ๋ฐฉ์ ๋ค ๊ฐ์ง๋ฅผ ์ดํด๋ณด์.
// 1. ํจ์ ์ ์ธ๋ฌธ
// ํจ์ ์ด๋ฆ ์๋ต ๋ถ๊ฐ๋ฅ
function add(x, y) {
return x + y
}
// 2. ํจ์ ํํ์
// ํจ์ ์ด๋ฆ ์๋ต ๊ฐ๋ฅ
var add = function(x, y) {
return x + y
}
// ํจ์ ์ด๋ฆ ์์ฑ ์,
// var add = function plus(x, y) {
// return x + y
// }
// 3. Function ์์ฑ์ ํจ์
var add = new Function('x', 'y', 'return x+ y')
// 4. ํ์ดํ ํจ์
var add = (x, y) => x + y
์์์ ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์์ ํธ์ด์คํ ๊ฒฐ๊ณผ๋ฅผ ๋จผ์ ๋ณด์.
// ํจ์ ์ฐธ์กฐ
console.dir(add) // output: f add(x, y)
console.dir(sub) // output: undefined
// ํจ์ ํธ์ถ
console.log(add(2, 5)) // output: 7
console.log(sub(2, 5)) // output: Uncaught TypeError: sub is not a function
// ํจ์ ์ ์ธ๋ฌธ
function add(x, y) {
return x + y
}
// ํจ์ ํํ์
var sub = function(x, y) {
return x + y
}
ํจ์ ์ ์ธ๋ฌธ์ ๊ฒฝ์ฐ, ๋ฐํ์ ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์ ๋จผ์ ์คํ๋์ด, ํจ์ ์์ฒด๋ฅผ ํธ์ด์คํ ์ํฌ ์ ์๋ค. ๋ฐ๋ฉด, ํจ์ ํํ์์ ์์์ ๋ดค๋ ๋ณ์ ํธ์ด์คํ ๊ณผ ๊ฐ์ด ๋ฐํ์ ์ด์ ์ ํด๋น ๊ฐ์ undefined๋ก ์ด๊ธฐํ๋ง ์ํค๊ณ , ๋ฐํ์์์ ํด๋น ํจ์ ํํ์์ด ํ ๋น๋์ด ๊ทธ๋ ๊ฐ์ฒด๊ฐ ๋๋ค.
โ๏ธ์ค์ฝํ
์ค์ฝํ(scope)๋ ์๋ณ์(ex. ๋ณ์๋ช , ํจ์๋ช , ํด๋์ค๋ช ๋ฑ)์ ์ ํจ๋ฒ์๋ฅผ ๋ปํ๋ฉฐ, ์ ์ธ๋ ์์น์ ๋ฐ๋ผ ์ ํจ ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋ค. ์ ์ญ์ ์ ์ธ๋ ๋ณ์๋ ์ ์ญ ์ค์ฝํ๋ฅผ, ์ง์ญ์ ์ ์ธ๋ ๋ณ์๋ ์ง์ญ ์ค์ฝํ๋ฅผ ๊ฐ๋๋ค.
์ ์ญ ๋ณ์๋ ์ด๋์์๋ ์ง ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ ๊ฐ์ด๋ค. ๋ฐ๋ฉด, ์ง์ญ ๋ณ์๋ ํจ์ ๋ชธ์ฒด ๋ด๋ถ๋ฅผ ๋งํ๋ค. ๋ฐ๋ผ์ ์ง์ญ ๋ณ์๋ ์์ ์ ์ง์ญ ์ค์ฝํ์ ๊ทธ ํ์ ์ง์ญ ์ค์ฝํ์์ ์ ํจํ๋ค.
ํ ๊ฐ์ง ์ฃผ์ํด์ผ ํ ์ ์, ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ์ฝ๋ ๋ธ๋ก(if, for, while, try/catch ๋ฑ)์ด ์ง์ญ ์ค์ฝํ๋ฅผ ๋ง๋ค๋ฉฐ, ์ด๋ฌํ ํน์ฑ์ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ผ ํ๋ค. ํ์ง๋ง var ํค์๋๋ก ์ ์ธ๋ ๋ณ์๋ ์ค๋ก์ง ํจ์์ ์ฝ๋ ๋ธ๋ก๋ง์ ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๋ค. ์ด๋ฅผ ํจ์ ๋ ๋ฒจ ์ค์ฝํ๋ผ ํ๋ค.
var a = 1
if (true) {
var a = 5
}
console.log(a) // output: 5
ํจ์๊ฐ ์๋ ๊ณณ์์ var ํค์๋๋ฅผ ์ด์ฉํด a๋ฅผ ์ ์ธํ๊ธฐ ๋๋ฌธ์ ์ ์ญ ๋ณ์๋ก ์ทจ๊ธํ๋ค. ๊ธฐ์กด์ ์๋ a ๋ณ์๊ฐ ์ค๋ณต ์ ์ธ๋๋ฉด์, ์ตํ๋จ์ console์์๋ ์ถ๋ ฅ ๊ฐ์ด 5๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํด๋น ์์ ๋ ์ฝ๋๊ฐ ์งง์์ ์ด๋์์ ๋ฌธ์ ๊ฐ ์ผ์ด๋์ง ๋ฐ๋ก ์ ์ ์์์ง๋ง, ์ค๋ฌด์์๋ ๊ทธ๋ ์ง ์๋ค. ์ ์ญ ๋ณ์๋ก ์ธํด ์ฌํ ๋น์ด ๋ฐ์ํ๊ฑฐ๋, ์ ์ญ ์ค์ฝํ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋๊ฐ์ ๋์ผํ ์ด๋ฆ์ด ์๋ค๋ฉด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ์ํ์ด ์๋ค. ๋ฐ๋ผ์ ์ค๋ก์ง ํจ์ ์ฝ๋ ๋ธ๋ก๋ง์ ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๋ var ๋์ , ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ์ง์ํ๋ const์ let์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
โ๏ธvar, let, const์ ์ฐจ์ด
์์์ ๋ฐ๊ฒฌํ var ํค์๋์ ๋ฌธ์ ์ ์ ํฌ๊ฒ ์ธ ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- ๋ณ์ ์ค๋ณต ์ ์ธ ๊ฐ๋ฅํ์ฌ, ์๊ธฐ์น ๋ชปํ ๊ฐ์ ๋ฐํํ ์ ์๋ค.
- ํจ์ ๋ ๋ฒจ ์ค์ฝํ๋ก ์ธํด ํจ์ ์ธ๋ถ์์ ์ ์ธํ ๋ณ์๋ ๋ชจ๋ ์ ์ญ ๋ณ์๋ก ๋๋ค.
- ๋ณ์ ์ ์ธ๋ฌธ ์ด์ ์ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ฉด ์ธ์ ๋ undefined๋ฅผ ๋ฐํํ๋ค.
ES6์์ ๋์จ let๊ณผ const ํค์๋๋ ์์ ์ธ ๊ฐ์ง ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ค.
โ๏ธ1. ๋ณ์ ์ค๋ณต ์ ์ธ ๋ถ๊ฐ
(1) let
let ํค์๋๋ก๋ ๋ณ์ ์ค๋ณต ์ ์ธ์ด ๋ถ๊ฐํ์ง๋ง, ์ฌํ ๋น์ ๊ฐ๋ฅํ๋ค.
let name = 'kmj'
console.log(name) // output: kmj
let name = 'howdy' // output: Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'howdy'
console.log(name) // output: howdy
(2) const
const๊ฐ let๊ณผ ๋ค๋ฅธ ์ ์ด ์๋ค๋ฉด, ๋ฐ๋์ ์ ์ธ๊ณผ ์ด๊ธฐํ๋ฅผ ๋์์ ์งํ๋์ด์ผ ํ๋ค.
const name; // output: Uncaught SyntaxError: Missing initializer in const declaration
const name = 'kmj'
const๋ let๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ ์ธ์ด ๋ถ๊ฐํ๋ฉฐ, ๋ ๋์๊ฐ ์ฌํ ๋น๋ ๋ถ๊ฐํ๋ค. ์ฌํ ๋น์ ๊ฒฝ์ฐ, ์์ ๊ฐ์ ๋ถ๊ฐ๋ฅํ์ง๋ง, ๊ฐ์ฒด๋ ๊ฐ๋ฅํ๋ค. const ํค์๋๋ ์ฌํ ๋น์ ๊ธ์งํ ๋ฟ, '๋ถ๋ณ'์ ์๋ฏธํ์ง ์๋๋ค.
// ์์๊ฐ์ ์ฌํ ๋น
const name = 'kmj'
name = 'howdy' // output: Uncaught TypeError: Assignment to constant variable.
// ๊ฐ์ฒด์ ์ฌํ ๋น
const name = {
eng: 'kmj',
}
name.eng = 'howdy'
console.log(name) // output: { eng: "howdy" }
โ๏ธ2. ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ
let, const ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ๋ชจ๋ ์ฝ๋ ๋ธ๋ก(ex. ํจ์, if, for, while, try/catch ๋ฌธ ๋ฑ)์ ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๋ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅธ๋ค.
์ var ํค์๋๋ก ์๋ฅผ ๋ค์๋ ๊ฒ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ ๋ฐ๊พธ๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
let a = 1
if (true) {
let a = 5
}
console.log(a) // output: 1
var ํค์๋๋ก ์ ์ธํ ๊ฒฝ์ฐ 5๊ฐ ๋์์ง๋ง, let ํค์๋๋ก ์ ์ธํ ๊ฒฝ์ฐ if ๋ฌธ ์์ ์๋ ๊ฒ์ ์ง์ญ ์ค์ฝํ๋ฅผ ๊ฐ์ ธ ์ ์ญ์์ console์ ์ฐ์์ ๊ฒฝ์ฐ, ์ ์ญ์ ์๋ a๊ฐ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ์ถ๋ ฅ๋๋ค. (const ํค์๋๋ let ํค์๋์ ๋์ผํ๊ฒ ๋์ํ๋ค)
โ๏ธ3. ๋ณ์ ํธ์ด์คํ
(1) let
let ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ์ ์ธ ๋จ๊ณ์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์งํ๋๋ค. ์ฆ, ๋ฐํ์ ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ์ ์ธ ๋จ๊ณ๊ฐ ๋จผ์ ์คํ๋์ง๋ง, ์ด๊ธฐํ ๋จ๊ณ๊ฐ ์คํ๋์ง ์์์ ๋ ํด๋น ๋ณ์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์ฐธ์กฐ ์๋ฌ๊ฐ ๋ฌ๋ค.
console.log(name) // output: Uncaught ReferenceError: name is not defined
let name = 'kmj'
๋ฐ๋ผ์ let ํค์๋๋ก ์ ์ธํ ๋ณ์๋ ์ค์ฝํ์ ์์ ์ง์ ๋ถํฐ ์ด๊ธฐํ ๋จ๊ณ ์์ ์ง์ ๊น์ง ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ ์ผ์์ ์ฌ๊ฐ์ง๋(Temporal Dead Zone: TDZ) ๊ตฌ๊ฐ์ ์กด์ฌํ๋ค.
(2) const
const ํค์๋๋ ์ ์ธ ๋จ๊ณ์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ๋์์ ์งํ๋๋ค.
console.log(name) // output: Uncaught ReferenceError: Cannot access 'name' before initialization
const name = 'kmj'
let ํค์๋๋ก ์ ์ธํ ๊ฒฝ์ฐ, ๋ฐํ์ ์ด์ ์ ์ ์ธ์ด ๋์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ด๋ฏธ ์กด์ฌํ์ง๋ง ์ด๊ธฐํ๊ฐ ๋์ง ์์๊ธฐ ๋๋ฌธ์ name is not defined๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋ด๋ค. ํ์ง๋ง const ํค์๋๋ก ์ ์ธํ ๊ฒฝ์ฐ, ์ ์ธ๊ณผ ์ด๊ธฐํ๊ฐ ๋์์ ์ด๋ฃจ์ด์ ธ์ผ ํ์ง๋ง ๋ฐํ์ ์ด์ ์๋ ์คํ๋ ์ ์๋ค. ๋ฐ๋ผ์ ์ด๊ธฐํ๊ฐ ์งํ๋์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์ Cannot access 'name' before initialization ์๋ฌ ๋ฌธ๊ตฌ๊ฐ ๋ฌ๋ค.
โ๏ธ์ ๋ฆฌ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์์ ์ค์ฝํ๋ ์ต๋ํ ์ข๊ฒ ๋ง๋๋ ๊ฒ์ ๊ถ์ฅํ๋ค. ๋ฐ๋ผ์, var ํค์๋ ๋ณด๋ค๋ let๊ณผ const ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ณ๊ฒฝํ์ง ์๋ ๊ฐ(์์)์ด๋ผ๋ฉด let ๋ณด๋ค๋ const ํค์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํ๋ค.
'Frontend๐ฑ > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript - ํ์ดํ ํจ์(Arrow function)๐ซ (0) | 2023.04.03 |
---|---|
var, let, const์ ์ฐจ์ด โค ๋ณ์ ์ ์ธ ๋ฐ ํ ๋น, ํธ์ด์คํ , ์ค์ฝํ (0) | 2023.04.03 |
์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ์ ์ธ๊ณผ ํธ์ถ (0) | 2023.04.03 |