'μ ν¨ λ²μ'
λ₯Ό μλ―Ένλ€.μμ μ΄ μ μΈλ μμΉμ μν΄
λ€λ₯Έ μ½λκ° μλ³μ μμ μ μ°Έμ‘°ν μ μλ μ ν¨ λ²μκ° κ²°μ λλ€. μ΄λ, μ΄ μλ³μκ° μ ν¨ν λ²μκ° λ°λ‘ μ€μ½ν(Scope)μ΄λ€.
μ€μ½νλ μ μ μ€μ½νμ μ§μ μ€μ½νλ‘ κ΅¬λΆν μ μλ€.
// μ μ, μ§μ μ€μ½ν μμ
var x = "λλ μ μ!";
function localS(){
var y = "λλ μ§μ!";
console.log(y); // λλ μ§μ!
// xλ μ μ μ€μ½νλ₯Ό κ°μ§κΈ° λλ¬Έμ μ κ·Ό κ°λ₯
console.log(x); // λλ μ μ!
}
localS();
// yλ μ§μ μ€μ½νλ₯Ό κ°μ§κΈ° λλ¬Έμ ν¨μ μΈλΆμμλ μ κ·Ό λΆκ°λ₯
console.log(y); // μ€λ₯ λ°μ
κ³Όμ°, ν¨μκ° μλ ifλ¬Έ, forλ¬Έ λ±μ μ½λ λΈλ
μμλ yλ μ§μ μ€μ½νλ₯Ό κ°μ§κΉ?
μλμ μ½λκ° μ΄λ»κ² λμν μ§ 5μ΄λμ μκ°ν΄λ³΄κΈ°!!!
// μ μ λ³μ
var a = 1, b = 1;
if(true){
// μ§μ λ³μ? μ μ λ³μ?
var a = 10;
}
function changeB(){
// μ§μ λ³μ
var b = 10;
}
console.log(a);
changeB();
console.log(b);
// μ μ λ³μ
let a = 1, b = 1;
if(true){
// μ§μ λ³μ? μ μ λ³μ?
let a = 10;
}
function changeB(){
// μ§μ λ³μ
let b = 10;
}
console.log(a);
changeB();
console.log(b);
- μ½λ 1μ κ²½μ° 10κ³Ό 1μ μΆλ ₯
- μ½λ 2μ κ²½μ° 1κ³Ό 1μ μΆλ ₯
λ°λ‘ varκ³Ό let, constμ μ°¨μ΄ λλ¬Έμ΄λ€
- varλ
ν¨μ λ 벨 μ€μ½ν(function level scope)
- let, constλ
λΈλ‘ λ 벨 μ€μ½ν(block level scope)
μλ°μ€ν¬λ¦½νΈλ μλ ν¨μ λ 벨 μ€μ½νλ₯Ό λ°λ₯΄μ§λ§,
ES6μ μΆκ°λ let, const λλΆμ λΈλ‘ λ 벨 μ€μ½νλ₯Ό μ¬μ©ν μ μκ² λμλ€.
κ²°λ‘ μ μΌλ‘, varμ μ¬μ©μ μ§μνλ κ² μ’λ€
- μ€λ³΅ μ μΈ κ°λ₯
- νΈμ΄μ€ν λ¬Έμ
- μ°Έκ³ μ¬μ΄νΈ
varμ μ¬μ©νλ©΄ μλλ μ΄μ
varμ κΆμ₯νμ§ μλ μ΄μ
μ΄λμ μ μΈνμλμ§μ λ°λΌ μμ μ€μ½νλ₯Ό κ²°μ
νλ€λ μ컬 μ€μ½νμ λν μμΈν λ΄μ©μ λ μ컬 μ€μ½ν
μλ° μ€ν¬λ¦½νΈκ° λ³μ κ°μ μ»μΌλ €κ³ ν λ, μ€μ½ν 체μΈμμ λ³μλ₯Ό μ°Ύκ² λλ€.
// μ€μ½ν 체μΈ
let x = "global x";
let y = "global y";
function outer(){
let z = "outer's local z";
console.log(x); // global x
console.log(y); // global y
console.log(z); // outer's local z
function inner(){
let x = "inner's local x";
console.log(x); // inner's local x
console.log(y); // global y
console.log(z); // outer's local z
}
inner();
}
outer();
console.log(x); // global x
μ€μ½ν
λ μ컬 μ€μ½ν
μ€μ½ν 체μΈ
μ€μ½ν 체μΈ, μ€μ½ν