π Scopeμ κ°λ
π€ Javascriptμμ Scopeλ 'λ³μκ° μ΄λκΉμ§ μ°μΌ μ μλμ§μ λν λ²μ'λ₯Ό μλ―Ένλ€.
π€ μ΄λ€ λ³μλ μ¬κΈ°μ κΈ°μ μΈ μ μλ λ°λ©΄μ, λ μ΄λ€ λ³μλ νΉμ ν¨μ λ΄μμλ§ μΈ μ μλ€.
βοΈ μ΄λ° κ°λ
μ΄ λ°λ‘ Scopeμ΄λ€.
βοΈ blockμ μ€κ΄νΈ {}
λ‘ κ°μΈμ§ κ²μ λ§νλ€.
π blockμ μ’
λ₯
π function λ΄λΆλ νλμ blockμ΄λ€.
function hi() {
return 'i am block';
};
π forλ¬Έ
for (let i = 0; i < 10; i++) {
count++;
};
π ifλ¬Έ
if (i === 1) {
let j = 'one';
console.log(j);
};
βοΈ {}(block)
λ΄λΆμμ λ³μκ° μ μλλ©΄ λ³μλ μ€λ‘μ§ {}(block)
λ΄λΆμμλ§ μ¬μ©ν μ μλ€. {}(block)
λ΄λΆμμ μ μλ λ³μλ π₯local Variable(μ§μ λ³μ) λΌκ³ λΆλ₯Έλ€. π
function getResult() {
let result = 10;
return result;
};
// μλ°μ€ν¬λ¦½νΈ μλ¬!
// getResult λ΄λΆμ scopeμ μ κ·Όν μ μλ€
console.log(result);
π console.log(result)
μμ getResult
λ΄λΆμ μ κ·Όμ΄ λΆκ°λ₯νκΈ° λλ¬Έμ result
λΌλ λ³μκ° μ‘΄μ¬νλμ§ μμ§ λͺ»νλ€.
π result
λΌλ λ³μλ getResult
ν¨μμ {}(block)
μμλ§ μ¬μ©ν μ μλ€.
π Global(μ μ) Scope
π€ scope μΈλΆ, β μ¦ block λ°
μμλ νΉμ scope
μ λ³μμ μ κ·Όν μκ° μλ€.
π€ blockλ°
μΈ global scope
μμ λ§λ λ³μκ° π₯global variable(μ μλ³μ) μ΄λ€.
π€ μ½λ μ΄λμλ μ κ·Ό κ°λ₯
ν΄μ λ³μκ°μ νμΈν μ μλ€.
const color = 'red';
console.log(color);
function returnColor() {
console.log(color);
return color;
};
console.log(returnColor());
π returnColor
ν¨μ λ΄μμ, returnColor
ν¨μ λ°μ μλ color
λΌλ λ³μλ₯Ό return
ν΄μ£Όμλ€.
π color
λΌλ λ³μλ global λ³μμ΄κΈ° λλ¬Έμ returnColor
ν¨μμ blockμμλ μ κ·Όμ΄ κ°λ₯ν΄μ 'red'
λ₯Ό λ°νν κ²μ΄λ€.
π Scopeμ μ€μΌ
π€ global λ³μλ₯Ό μ°λ©΄ μ¬κΈ° μ κΈ°μ μ κ·ΌνκΈ° μ¬μμ μ’λ€κ³ μκ°ν μ μμ§λ§, λ무 λ¨μ©νλ©΄ νλ‘κ·Έλ¨μ λ¬Έμ λ₯Ό μΌμΌν¬ μ μλ€.
π€ global λ³μλ₯Ό μ μΈνλ©΄, ν΄λΉνλ‘κ·Έλ¨μ μ΄λμμλ μ¬μ©ν μ μλΒ global namespaceλ₯Ό κ°λλ€.
π€ namespaceλΌλ κ²μ λ³μ μ΄λ¦μ μ¬μ©ν μ μλ λ²μλΌλ λ»μ΄λ€. scopeμ΄λΌκ³ λ νκ³ νΉν λ³μμ΄λ¦μ μκΈ°ν λλ namespaceλΌκ³ λ νλ€.
global λ³μλ νλ‘κ·Έλ¨μ΄ μ’
λ£λ λκΉμ§ κ³μ μ΄μμλ€.
π€ global λ³μκ° κ³μ μ΄μμμ΄μ λ³μκ°μ΄ κ³μ λ³νλ€λ©΄ ν΄λΉ λ³μλ₯Ό νΈλνΉνκΈ°λ μ΄λ ΅κ³ μ΄ λ³μλ μ΄λμμ μ νμνμ§ μλ €λ©΄ λλ체 μ΄λμμΒ let
,Β const
λ‘ μ μΈμ νλμ§ μ°Ύμ λμμΌ νλ€.
Scope μ€μΌλ λνμ μΈ μπ
const satellite = 'The Moon';
const galaxy = 'The Milky Way';
let stars = 'North Star';
const callMyNightSky = () => {
stars = 'Sirius';
return 'Night Sky: ' + satellite + ', ' + stars + ', ' + galaxy;
};
console.log(callMyNightSky());
console.log(stars);
π stars
Β μ΄λΌλ global λ³μκ° μμ΅λλ€.
π callMyNightSky
Β ν¨μμμ μλ‘μ΄ λ³μλ₯Ό μ μΈνκ³ μΆμλλ° κΉλΉ‘νκ³ Β let
Β ν€μλλ₯Ό μμ±νμ§ μμμ΅λλ€.
π callMyNightSky
Β μ νΈμΆνλ©΄ stars λ³μμΒ "Sirius"
Β μ΄ ν λΉλ©λλ€.
π global λ³μμλΒ stars
Β μ μν₯μ΄ κ°μ΅λλ€!
π λ€λ₯Έ ν¨μμμ global λ³μμΈΒ stars
Β μ μ¬μ©νκ³ μΆμλ° κ°μ΄ μμ λΒ "Sirius"
Β μΌλ‘ μ¬μ©νκ² λ©λλ€.
π μ’μ Scoping μ΅κ΄
βοΈ global λ³μκ° μ¬κΈ°μ κΈ°μ μμ λλ©΄ μλκΈ° λλ¬Έμ λ³μλ€μ block scopeμΌλ‘ μ΅λν λλ λμΌ νλ€.
π₯ global λ³μλ μ°μ§ μλλ‘ λ
Έλ ₯ν΄μΌνλ©°
π₯ μ΅λν {} λ΄μμ λ³μλ₯Ό μλ‘ λ§λ€μ΄μ μ¬μ©νλκ² μ’λ€.
π₯ νμ blockλ§λ€ λ€λ₯Έ μ΄λ¦μΌλ‘ λ³μλ₯Ό μ μΈνμ.