μ€μ½ν
λͺ¨λ μλ³μλ μμ μ΄ μ μΈλ μμΉμ μν΄ λ€λ₯Έ μ½λκ° μμ μ μ°Έμ‘°ν μ μλ μ ν¨ λ²μκ° κ²°μ λλ€.
μ€μ½ν(scope
) : μλ³μκ° μ ν¨ν λ²μ
- μλ°μ€ν¬λ¦½νΈλ μ½λλ₯Ό μ€νν λ μ½λμ λ¬Έλ§₯(
context
)λ₯Ό κ³ λ €ν©λλ€. - μ΄λ¦μ΄ κ°μ λ λ³μμ€ μ΄λ€ κ²μ μ°Έμ‘°ν μ§ κ²°μ νλ κ²μ μλ³μ κ²°μ μ΄λΌκ³ ν©λλ€.
- μ€μ½ν(
scopoe
)λ μλ³μλ₯Ό κ²μν λ μ¬μ©νλ κ·μΉμ΄λΌκ³ ν μ μμ΅λλ€.μ½λκ° μ΄λμ μ€νλλ©° μ£Όλ³μ μ΄λ€μ½λκ° μλμ§λ₯Ό λ μ컬 νκ²½(
lexical enviroment
)λΌκ³ ν©λλ€. μ¦, μ½λμcontext
λ λ μ컬 νκ²½μΌλ‘ ꡬμ±λκ³ μ΄λ₯Ό ꡬνν κ²μ΄ μ€ν 컨ν μ€νΈμ λλ€.
μ€μ½νμ μ’ λ₯
- μ½λλ μ μ(
global
)κ³Ό μ§μ(local
)λ‘ κ΅¬λΆν μ μμ΅λλ€.
κ΅¬λΆ | μ€λͺ | μ€μ½ν | λ³μ |
---|---|---|---|
μ μ | μ½λμ κ°μ₯ λ°κΉ₯μμ | μ μ μ€μ½ν | μ μ λ³μ |
μ§μ | ν¨μ λͺΈμ²΄ λ΄λΆ | μ§μ μ€μ½ν | μ§μ λ³μ |
μ μκ³Ό μ μ μ€μ½ν
- μ μμ΄λ μ½λμ κ°μ₯ λ°κΉ₯ μμμ λ§νλ€.
- μ μμ λ³μλ₯Ό μ μΈνλ©΄ μ μλ³μ, μ μ λ³μλ μ΄λμλ μ°Έμ‘° κ°λ₯
μ§μκ³Ό μ§μ μ€μ½ν
- μ§μμ΄λ ν¨μ λͺΈμ²΄ λ΄λΆλ₯Ό λ§νλ€.
- μ§μ λ³μλ μμ μ΄ μ μΈλ μ§μκ³Ό νμ μ§μ(μ€μ²©ν¨μ)μμλ§ μ°Έμ‘° κ°λ₯
μ€μ½ν 체μΈ
- ν¨μλ μ€μ²©λ μ μμΌλ―λ‘ ν¨μμ μ§μ μ€μ½νλ μ€μ²©λ μ μμ΅λλ€.
- μ¦, μ€μ½νλ ν¨μμ μ€μ²©μ μν΄ κ³μΈ΅μ ꡬ쑰λ₯Ό κ°μ΅λλ€.
- λͺ¨λ μ§μ μ€μ½νμ μ΅μμ μ€μ½νλ μ μ μ€μ½νμ΄κ³ μ΄λ κ² μ€μ½νκ° κ³μΈ΅μ μΌλ‘ μ°κ²°λ κ²μ μ€μ½ν 체μΈ(
scope chain
)μ΄λΌκ³ ν©λλ€.
- μλ°μ€ν¬λ¦½νΈ μμ§μ μ€μ½ν 체μΈμ ν΅ν΄ λ³μλ₯Ό μ°Έμ‘°νλ μ½λμ μ€μ½νμμ μμνμ¬ μμ μ€μ½ν λ°©ν₯μΌλ‘ μ΄λνλ©° μ μΈλ λ³μλ₯Ό κ²μν©λλ€.
μ¦, μμ μ€μ½νμμ μ μΈν λ³μλ₯Ό νμ μ€μ½νμμ μ°Έμ‘°ν μ μμ΅λλ€.
- μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ€ννκΈ° μμ λ μ컬 νκ²½μ μ€μ λ‘ μμ±ν©λλ€.
λ μ컬 νκ²½μ΄λ μ€μ½ν 체μΈμ ꡬνν μλ£κ΅¬μ‘°μ λλ€.
λ³μ μ μΈ, ν λΉ, κ²μλ μ΄ μλ£κ΅¬μ‘° μμμ μ΄λ£¨μ΄ μ§λλ€.
λ³μ κ²μ
- λ³μλ μμ μ μ§μμ€μ½νλ₯Ό λ¨Όμ μ‘°μ¬νκ³ κ²μ λμ§ μλ κ²½μ° μ€μ½ν 체μΈμ λ°λΌ μμ μ€μ½νλ₯Ό κ²μν©λλ€.
- μ¦, νμ μ€μ½νλ‘ λ΄λ €κ°λ©΄μ μλ³μλ₯Ό κ²μνλ μΌμ μμ΅λλ€.
- μ 리 : νμ μ€μ½νμμ μμ μ€μ½νμ λ³μ μ°Έμ‘° κ°λ₯, μμ μ€μ½νμμ νμ μ€μ½νλ₯Ό μ°Έμ‘° λΆκ°λ₯
ν¨μ κ²μ
// μ μ ν¨μ
function foo() {
console.log('global function foo');
}
function bar() {
// μ€μ²© ν¨μ
function foo() {
console.log('local function foo');
}
foo(); // κ²°κ³Ό : local function foo
}
bar();
- λ³μ κ²μκ³Ό λ§μ°¬κ°μ§ λ°©μμΌλ‘ λμ
ν¨μ λ 벨 μ€μ½ν
- ν¨μ λ 벨 μ€μ½ν : μ½λ λΈλ‘μ΄ μλ ν¨μμ μν΄μλ§ μ§μ μ€μ½ν μμ±
- λΈλ‘ λ 벨 μ€μ½ν : λͺ¨λ μ½λλΈλ‘ (ν¨μ ν¬ν¨ if, for, while λ±λ±)μ΄ μ§μ μ€μ½ν μμ±
- varλ ν¨μ μ€μ½ν, let & constλ λΈλ‘ λ¨μ μ€μ½νλ₯Ό κ°μ§λλ€.
var x = 1;
if (true) {
// var ν€μλλ‘ μ μΈλ λ³μλ ν¨μμ μ½λ λΈλ‘(ν¨μ λͺΈμ²΄)λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
// ν¨μ λ°μμ var ν€μλλ‘ μ μΈλ λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈλμλ€ ν μ§λΌλ λͺ¨λ μ μ λ³μλ€.
// λ°λΌμ xλ μ μ λ³μλ€. μ΄λ―Έ μ μΈλ μ μ λ³μ xκ° μμΌλ―λ‘ x λ³μλ μ€λ³΅ μ μΈλλ€.
// μ΄λ μλμΉ μκ² λ³μ κ°μ΄ λ³κ²½λλ λΆμμ©μ λ°μμν¨λ€.
var x = 10;
}
console.log(x); // 10
λ μ컬 μ€μ½ν
λμ μ€μ½ν(
dynamic scope
) : ν¨μκ° νΈμΆ λλ μμ μ λμ μΌλ‘ μμ μ€μ½νλ₯Ό κ²°μ
λ μ컬 μ€μ½ν(lexical scope
) λλ μ μ μ€μ½ν(static scope
) :ν¨μ μ μκ° νκ°λλ μμ μ μμ μ€μ½νκ° μ μ μΌλ‘ κ²°μ
- μλ°μ€ν¬λ¦½νΈλ λ μ컬 μ€μ½νλ₯Ό λ°λ¦
- μ¦, ν¨μ νΈμΆ λ λκ° μλλΌ ν¨μ μ μκ° μ€ν λ λ μμ μ€μ½νκ° κ²°μ λ¨
var x = 1;
function foo() {
var x = 10;
console.log(x); // 10
bar();
}
function bar() {
console.log(x);
}
foo(); // 1
bar(); // 1
console.log(x); // 1
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[2μ£Όμ°¨ μ€ν°λ]15μ₯-let const λΈλ‘ μ€μ½ν (0) | 2022.02.06 |
---|---|
[2μ£Όμ°¨ μ€ν°λ]14μ₯-μ μλ³μ λ¬Έμ μ (0) | 2022.02.06 |
[2μ£Όμ°¨ μ€ν°λ]12μ₯-ν¨μ (0) | 2022.02.06 |
[2μ£Όμ°¨ μ€ν°λ]11μ₯-μμκ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.02.06 |
[2μ£Όμ°¨ μ€ν°λ]10μ₯-κ°μ²΄ 리ν°λ΄ (0) | 2022.02.06 |
λκΈ