λ΄λΆν¨μκ° μΈλΆν¨μμ λ§₯λ½(context)μ μ κ·Όν μ μλ κ²μ κ°λ¦¬ν΅λλ€.
μ΄νμ νκ²½(Lexical Environment)
// (1)
// one : μ΄κΈ°ν X, addOne : function
let one; // (2) one : undefined, addOne : function
one = 1; // (3) one : 1, addOne : function -> μ μ Lexical
function addOne(num){
console.log(one + num);
}
addOne(5); // (4) ν¨μκ° μ€νλλ μκ° μλ‘μ΄ Lexical νκ²½μ΄ λ§λ€μ΄μ§λλ€. num : 5
- (1) : μ½λκ° μ€νλλ©΄ μ€ν¬λ¦½νΈ λ΄μμ μ μΈν λ³μλ€μ΄ Lexical νκ²½ μ μ¬λΌκ°λλ€.
- (4) μμ ν¨μκ° λ겨λ°μ 맀κ°λ³μμ μ§μλ³μκ° μ μ₯λ©λλ€.
- ν¨μκ° νΈμΆλλ λμ ν¨μμμ λ§λ€μ΄μ§ λ΄λΆ Lexical νκ²½, μ¦ (4)λ²κ³Ό
- μΈλΆμμ λ°μ μ μ Lexical νκ²½(3) λ κ°λ₯Ό κ°μ§λλ€.
- λ΄λΆ Lexical νκ²½μ μΈλΆ Lexical νκ²½μ λν μ°Έμ‘°λ₯Ό λ°μ΅λλ€.
- μ½λμμ λ³μλ₯Ό μ°Ύμ λλ λ΄λΆμμ μ°Ύκ³ μμ κ²½μ° μΈλΆ, κ·Έ λ€μ μ μ Lexical νκ²½κΉμ§ λ²μλ₯Ό λνμ μ°Ύμ΅λλ€.
- μμ μ½λμμ one + num μ μ°μ λ΄λΆ Lexical νκ²½μμ μ°Ύμ΅λλ€.
- num μ μ°Ύμμ§λ§ one μ μ°Ύμ§ λͺ»νμ΅λλ€.
- μ°Ύμ§ λͺ»νμΌλ μΈλΆλ‘ λ²μλ₯Ό λνμ one μ μ°Ύμ΅λλ€.
μμ
let base = 'Hello, ';
function sayHelloTo(name) {
let text = base + name; // μΈλΆ νκ²½μμ μ°Ύλλ€.
return function() {
console.log(text); // λ΄λΆ νκ²½μμ textλΌλ λ³μκ° μκΈ° λλ¬Έμ
};
}
var hello1 = sayHelloTo('μΉλ―Ό');
var hello2 = sayHelloTo('νμ');
var hello3 = sayHelloTo('μ κ·Ό');
hello1(); // 'Hello, μΉλ―Ό'
hello2(); // 'Hello, νμ'
hello3(); // 'Hello, μ κ·Ό'
- λ΄λΆν¨μκ° μΈλΆν¨μμ λ§₯λ½(context)μ μ κ·Όν μ μλ κ²μ κ°λ¦¬ν΅λλ€.
μ 리
- ν΄λ‘μ λ ν¨μμ λ μ컬 νκ²½μ μ‘°ν© μ λλ€.
- ν¨μκ° μμ±λ λΉμμ μΈλΆ λ³μλ₯Ό κΈ°μ΅νκ³ μμ± μ΄νμλ κ³μ μ κ·Όμ΄ κ°λ₯ ν©λλ€.
μ°Έκ³
'π Front-End > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Promise (0) | 2022.11.17 |
---|---|
AJAX (0) | 2022.11.17 |
class (0) | 2022.11.16 |
μμ±μ ν¨μ (0) | 2022.11.16 |
Event Loop (0) | 2022.11.16 |