π μ€μ½ν(Scope)
: λ³μμ μ κ·Όν μ μλ λ²μ = (μλ³μλ₯Ό μ°Ύμλ΄κΈ° μν κ·μΉ)
μ€μ½νλ μ μ μ€μ½νμ μ§μ μ€μ½νλ‘ λλ μ μμ΅λλ€.
λ³μλ μ μΈ μμΉμ μν΄ μ€μ½νλ₯Ό κ°κ² λ©λλ€.
μ μ μ€μ½νλ₯Ό κ°λ μ μ λ³μλ μ μμμ μ°Έμ‘° κ°λ₯νκ³ ,
μ§μ μ€μ½νλ₯Ό κ°λ μ§μ λ³μλ μ μΈλ μ§μκ³Ό νλΆ μ§μμμλ§ μ°Έμ‘°ν μ μμ΅λλ€.
λ³μλ₯Ό μ°Έμ‘°ν λ, μλ°μ€ν¬λ¦½νΈ μμ§μ μ€μ½ν 체μΈμ ν΅ν΄ λ³μλ₯Ό μ°Έμ‘°νλ μ½λμ μ€μ½νμμ μμν΄μ μμ μ€μ½ν λ°©ν₯μΌλ‘ μ΄λνλ©° μ μΈλ λ³μλ₯Ό κ²μν©λλ€.
μ€μ½ν 체μΈ
μ μ κ°μ²΄μ μ€μ²©λ ν¨μμ μ€μ½ν λ νΌλ°μ€λ₯Ό μ°¨λ‘λ‘ μ μ₯νκ³ , μ€μ½νκ° μ΄λ»κ² μ°κ²° λκ³ μλμ§ λ³΄μ¬μ£Όλ κ²μ λ§ν©λλ€.
μλ³μμ μ€μ½νλ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μΌλ‘ κ΄λ¦¬ν©λλ€.
λ μ컬 νκ²½μ μλ³μμ μλ³μμ λ°μΈλ©λ κ°, μμ μ€μ½νμ λν μ°Έμ‘°λ₯Ό κΈ°λ‘νλ μλ£κ΅¬μ‘°λ‘, μ€ν 컨ν μ€νΈλ₯Ό ꡬμ±ν©λλ€.
ν¨μ λ 벨 μ€μ½ν vs λΈλ‘ λ 벨 μ€μ½ν
ν¨μ λ 벨 μ€μ½ν
ν¨μ μ½λ λΈλ‘ μμμ μ μΈλ λ³μλ ν¨μ λ΄μμλ§ μ ν¨νκ³ μΈλΆμμ μ°Έμ‘°ν μ μλ€.λΈλ‘ λ 벨 μ€μ½ν
μ½λ λΈλ‘(ifλ¬Έ, forλ¬Έ λ±) μμμ μ μΈλ λ³μλ μ½λ λΈλ‘ λ΄μμλ§ μ ν¨νκ³ μΈλΆμμ μ°Έμ‘°ν μ μλ€.
μλ°μ€ν¬λ¦½νΈλ ν¨μ λ 벨 μ€μ½νμ΄μ§λ§
let, constλ₯Ό μ¬μ©νλ©΄ λΈλ‘ λ 벨 μ€μ½ν μ¬μ© κ°λ₯ν©λλ€.
var global = 'global';
function test(){
if(1){
var a='a';
const b='b';
}
console.log(global); // 'global'
console.log(a); // 'a'
console.log(b); // "ReferenceError: b is not defined
}
test();
/**
* globalμ κ²½μ° μ μμμ μ μΈλκΈ°μ μ μ°λ³μκ° λ©λλ€.
* varλ‘ μ μΈλ λ³μ aλ μ½λ λΈλ‘ λ°κΉ₯μμ μ κ·Όμ΄ κ°λ₯ν©λλ€.
* constλ‘ μ μΈν λ³μ bλ λΈλ‘ λ 벨 μ€μ½νκ° μ μ©λμ΄ referenceErrorλ₯Ό λ±μ΅λλ€.
*/
λ μ컬 μ€μ½ν(Lexical Scope)
μ€μ½νκ° ν¨μλ₯Ό μ μΈν λ κ²°μ λλ κ²μ λ§ν©λλ€.
const a = 'global';
function A(){
const a = 'a';
console.log(a); // 'a'
B();
}
function B(){
const b='b';
function C(){
const c='c'
console.log(a); // 'global'
console.log(b); // 'b'
console.log(c); // 'c'
}
C();
}
A();
B();
/**
* μ€μ½νλ ν¨μκ° μ μΈλ μμΉκ° κΈ°μ€μΌλ‘ μ ν΄μ§κΈ° λλ¬Έμ
* ν¨μ Aμμ ν¨μ Bλ₯Ό νΈμΆνλ€κ³ ν΄λ
* ν¨μ Cμμ μΆλ ₯λλ λ³μ aλ μ μλ³μ aμ
λλ€.
*
* ν¨μ C μ€μ½ν 체μΈ
* ν¨μ C -> ν¨μ B -> μ μ
*/
'π» νλ‘ νΈμλ > π JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ°μ€ν¬λ¦½νΈ] λΉλκΈ° μ²λ¦¬μ μ΄λ²€νΈλ£¨ν (0) | 2023.12.27 |
---|---|
[μλ°μ€ν¬λ¦½νΈ] ν΄λ‘μ (1) | 2023.12.27 |
[μλ°μ€ν¬λ¦½νΈ] μ€ν컨ν μ€νΈ (0) | 2023.12.27 |
[μλ°μ€ν¬λ¦½νΈ] This (0) | 2023.12.27 |
λΈλΌμ°μ λ λλ§ μ리 (0) | 2023.12.27 |