Chapter15 let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν
1) λ€μ μ½λμ μ€ν κ²°κ³Ό (1), (3), (5)λ₯Ό μμΈ‘νμΈμ.
2) μΌμμ μ¬κ°μ§λ(TDZ)
λ 무μμΈμ§ μμ νκ³ , μ½λμμ κ·Έ ꡬκ°μ κ³ λ₯΄μΈμ.
console . log ( foo ) ; // (1)
lef foo ; // (2)
console . log ( foo ) ; // (3)
foo = 1 ; // (4)
console . log ( foo ) ; // (5)
(1) ReferenceError: foo is not defined
(3) undefined
(5) 1
(1) μ΄κΈ°ν μ΄μ μ μΌμμ μ¬κ°μ§λ
(2) λ³μ μ μΈλ¬Έμμ μ΄κΈ°ν λ¨κ³ μ€ν
(5) ν λΉλ¬Έμμ ν λΉ λ¨κ³ μ€ν
μΌμμ μ¬κ°μ§λ(TDZ)λ μ€μ½νμ μμ μμ λΆν° μ΄κΈ°ν μμ μ§μ κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ ꡬκ°μ λ»νλ€.
(1)
λ€μ λ¬Έμ₯μ true or falseλ₯Ό νλ¨νμΈμ.
(1) ν¨μ μΈλΆμμ var ν€μλλ‘ μ μΈν λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈν΄λ λͺ¨λ μ μ λ³μκ° λλ€.
(2) let ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλλ€.
(3) const ν€μλλ‘ μ μΈν λ³μλ μ΄κΈ°νλ₯Ό λμμ νμ§ μμΌλ©΄ μλ¬κ° λ°μνλ€.
(4) const ν€μλλ‘ μ μΈλ λ³μλ κ°μ λ³κ²½ν μ μλ λ°©λ²μ΄ μλ€.
(1) true
(2) false
(3) true
(4) false
(1) 209p
var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
μ΄λ μλμΉ μκ² λ³μκ°μ΄ λ³κ²½λλ λΆμμ©μ λ°μμν¨λ€.
(2) 213p
μλ°μ€ν¬λ¦½νΈλ ES6μμ λμ
λ let, constλ₯Ό ν¬ν¨ν λͺ¨λ μ μΈμ νΈμ΄μ€ν
νλ€.
λ¨, ES6μμ λμ
λ let, const, classλ₯Ό μ¬μ©ν μ μΈλ¬Έμ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
(3) 215p
const ν€μλλ‘ μ μΈν λ³μλ λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νλ€.
κ·Έλ μ§ μμΌλ©΄ λ¬Έλ² μλ¬κ° λ°μνλ€.
(SyntaxError: Missing initializer in const declaration)
(4) 217p
const ν€μλλ‘ μ μΈλ λ³μμ μμ κ°μ ν λΉν κ²½μ°,
μμ κ°μ λ³κ²½ν μ μλ κ°μ΄κ³ const ν€μλλ‘ μΈν΄ μ¬ν λΉμ΄ κΈμ§λμ΄ ν λΉλ κ°μ λ³κ²½ν μ μλ€.
νμ§λ§ const ν€μλλ‘ μ μΈλ λ³μμ κ°μ²΄λ₯Ό ν λΉν κ²½μ°μλ κ°μ λ³κ²½ν μ μλ€.
κ°μ²΄λ λ³κ²½ κ°λ₯ν κ°μ΄κΈ° λλ¬Έμ μ¬ν λΉ μμ΄λ μ§μ λ³κ²½ κ°λ₯νλ€.
λ€μ λ¬Έμ₯μ true or falseλ₯Ό νλ¨νμΈμ.
1. κ°μ²΄λ λ³κ²½μ΄ κ°λ₯νλ€.
2. κ°μ²΄μ λΆλ³μ±μ μ§λ κ°μ²΄μ μ¬ν λΉμ κΈμ§νλκ²μ μλ―Ένλ€.
(1) true
(2) false - κ°μ²΄μ νλ‘νΌν°,λ©μλμ λΆλ³μ μλ―Ένλ€. λ°λΌμ κ°μ²΄ λ΄λΆμ λ³κ²½μ¬νμ΄ λ°μνμλ νλ‘νΌν°,λ©μλλ₯Ό μ§μ λ³κ²½νμ§μκ³ ,
μλ‘μ΄ κ°μ²΄λ₯Ό ν λΉν΄μ€μΌλ‘μ¨ νλ‘νΌν°λ λ©μλλ₯Ό λ
립μ μΌλ‘ κ΄λ¦¬ν μ μκ²λλ€.
λ€μ μ½λμ κ²°κ³Όλ₯Ό μ°μμ€
var x = 1 ;
let y = 1 ;
for ( var x = 0 ; x < 1 ; x ++ ) {
var x = 10 ;
let y = 10 ;
}
console . log ( x ) ;
console . log ( y ) ;
11
1
var ν€μλλ‘ μ μΈλ λ³μλ ν¨μ μ€μ½νλ₯Ό κ°μ§κΈ° λλ¬Έμ for λ¬Έ μμμ μ¬μ μΈλ μ μλ€.
λ°λ©΄ let ν€μλλ λΈλ‘ μ€μ½νλ₯Ό κ°μ§κΈ° λλ¬Έμ for λ¬Έ μμμ μ€μ½νκ° λ°λ‘ λ§λ€μ΄μ§κ² λλ€.
μλ μ½λμμ ReferenceError
κ° λ°μν©λλ€. μ΄μ λν μ΄μ λ₯Ό νΈμ΄μ€ν
, μ€μ½ν
λ¨μ΄μ ν¨κ» μμ±νμμ€.
let foo = 1 ; // (1)
{
console . log ( foo ) ;
let foo = 2 ; // (2)
}
ReferenceError: Cannot access 'foo' before initialization
let ν€μλλ‘ μ μΈνκΈ° μ μ λ³μλ₯Ό νΈμΆν μλ¬μ΄λ€.
μ λ¬Έμ μμ μ΄μ κ°μ μλ¬κ° λ°μν μ΄μ λ let ν€μλλ₯Ό ν΅ν΄ (2)μμ μ μΈμ νμμ§λ§,
νΈμ΄μ€ν
μ ν΅ν΄ λΈλ‘({})μ μ§μ
νμμ λ, (console.log보λ€) λ¨Όμ μ μΈ λ¨κ³κ° μ§νλλ€.
νμ§λ§ var ν€μλμ λ€λ₯΄κ² μ΄κΈ°ν λ¨κ³κΉμ§ μ§νλμ§ μλλ€.
λ°λΌμ μ΄κΈ°ν λμ§ μμ λ³μλ₯Ό νΈμΆνλ €κ³ νλ μλ¬κ° λ°μνλ€.
λ§μ½ letν€μλκ° νΈμ΄μ€ν
λμ§ μλλ€λ©΄,
console.logμμ fooλ³μλ₯Ό μ°ΎκΈ° μν΄ μ€μ½ν체μ΄λμ ν΅ν΄ μμ μ€μ½νλ‘ μ¬λΌκ°λ©΄μ fooλ³μλ₯Ό μ°Ύλλ€.
μμ μ€μ½νμ (1)μμ fooλ³μλ₯Ό μ°ΎμΌλ―λ‘ 1μ΄ μΆλ ₯λ μ μλ€.
λ§μ½ (1)μ μ½λκ° μμ μκ³ , let ν€μλκ° νΈμ΄μ€ν
λμ§ μλλ€λ©΄, (μ μΈνμ§ μμ λ³μλ₯Ό νΈμΆνλ κ²½μ°)
ReferenceError: 'foo' is not defined
λ‘ λ€λ₯Έ μ€λͺ
μ μλ¬κ° μΆλ ₯λλ€.