λͺ©μ°¨
JSμμ μ¬μ©νλ IIFEμ λν΄μ μμ보μ.
μ€λλ μλ μ μ¬μ©νμ§ μμ§λ§ κ³Όκ±°μ μ¬μ©νλ μ½λλ₯Ό λΆμνκΈ° μν΄μ μμ보μ!
1. IIFEλ?
μ¦μ μ€ν ν¨μ νν(Immediately Invoked Function Expression, IIFE)μ
μ μλμλ§μ μ¦μ μ€νλλ ν¨μλ₯Ό λ§νλ€.
ꡬ쑰
(function() {
...
}) ();
Self-Executing Anonymous Function μΌλ‘ λΆλ¦¬λ λμμΈ ν¨ν΄μ΄λΌκ³ νλ€.
μ¬κΈ°μμλ λ κ°μ κ΄νΈμ μ£Όλͺ©μ ν΄μΌνλ€.
λ¨Όμ , μ΅λͺ ν¨μλ₯Ό λλ¬μΌ κ΄νΈμ΄λ€.
μ΄λ₯Ό ν΅ν΄μ μ μ Scopeμ λΆνμν λ³μλ€μ μν μ€μΌ λ°©μ§μ
IIFE λ΄λΆ μμΌλ‘ λ€λ₯Έ λ³μλ€μ΄ μ κ·Όνλ κ²μ λ°©μ§ν μ μλ€.
κ·Έ λ€μμΌλ‘λ νλ―Έμ μμΉνλ μ¦μ μ€ν ν¨μλ₯Ό μμ±νλ κ΄νΈμ΄λ€.
μ΄λ‘μΈν΄ JSμμ§μ΄ ν¨μλ₯Ό μ¦μ ν΄μνμ¬ μ€ννλ€.
μ¬μ©μ²
μ΄μ μ letμ΄ μλ varλ‘ λ³μλ₯Ό μ μΈν λ μ£Όλ‘ μ¬μ©νμκ³
λ± ν λ² λ§ μνν ν¨μμ΄κ³ , κ·Έ κ²°κ³Όκ°μ μ΄μ©νμ¬ μ΄κΈ°κ°μΌλ‘ νμ©ν κ²½μ°μ μ£Όλ‘ μ¬μ©νλ€.
IIFE λ΄λΆμ μ¬μ©ν λ³μλͺ , μμλͺ μ΄ μΈλΆμ κ²λ€κ³Ό μλ‘ μΆ©λνλ κ²μ λ§μ μ μλ€.
(μ€μΌ λ°©μ§!)
μμ)
const initMsg = (function (){
var month = 3;
var day = 16;
var concentrationLv = [20, 34, 60, 65, 40, 42];
var avgLvTemp = 0;
for (const i of concentrationLv){
avgLvTemp += i;
}
avgLvTemp /= concentrationLv.length;
return `${month}μ ${day}μΌμ νκ· λ―ΈμΈλ¨Όμ§ λλλ ${avgLvTemp}μ
λλ€.`;
})();
console.log(initMsg);
>>> 3μ 16μΌμ νκ· λ―ΈμΈλ¨Όμ§ λλλ 43.5μ
λλ€.
λ§μ½ μ΄λ λ΄λΆμμ μ μΈν λ³μμ κ°μ μ΄λ¦μ μΈλΆμμ μ κ·Όν κ²½μ° μ€λ₯κ° λ°μνλ€.
console.log(month); //λ΄λΆμμ μ μΈν κ²μ΄λ―λ‘ μ μνμ§ μμ κ²μΌλ‘ μΈμ§
>>> Uncaught ReferenceError: month is not defined
varμ νΉμ± μ letκ³Ό λ€λ₯΄κ² μ΄λ―Έ μ μΈν λ³μλͺ μμλ λΆκ΅¬νκ³ μ¬μ μΈμ΄ κ°λ₯νλ κ²μ
μμ κ°μ λ°©λ²μΌλ‘ λ°©μ§ν μ μλ€. (λ€νν varκ° ν¨μScopeλ λ²μ΄λμ§ μμμ)
λν μ½λμ μμ΄ λ°©λν κ²½μ°μλ μμ κ°μ λ°©λ²μ΄ μΆ©λ λ°©μ§μ λμμ μ€λ€!
νμ§λ§ μ€λλ μλ λΈλ‘λ¬Έκ³Ό let, const λ§μΌλ‘λ κ°νΈνκ² κ΅¬νν μ μλ€.
let initMsg;
{
let month = 3;
let day = 16;
let concentrationLv = [20, 34, 60, 65, 40, 42];
let avgLvTemp = 0;
for (const i of concentrationLv){
avgLvTemp += i;
}
avgLvTemp /= concentrationLv.length;
initMsg = `${month}μ ${day}μΌμ νκ· λ―ΈμΈλ¨Όμ§ λλλ ${avgLvTemp}μ
λλ€.`;
}
console.log(initMsg);
>>> 3μ 16μΌμ νκ· λ―ΈμΈλ¨Όμ§ λλλ 43.5μ
λλ€.
'π | WEB DEV > Vanilla JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JS_κΈ°λ³Έ λ¬Έλ² (24)_ μμ±μ ν¨μ (0) | 2023.03.31 |
---|---|
JS_κΈ°λ³Έ λ¬Έλ² (23)_ κ°μ²΄ + (0) | 2023.03.26 |
JS_κΈ°λ³Έ λ¬Έλ² (22)_ 맀κ°λ³μ (κΈ°λ³Έκ°, arguments, λλ¨Έμ§ λ³μ, μ΄μμ μΈ ν¨μ?) (0) | 2023.03.12 |
JS_κΈ°μ (1)_ 컀λ§(currying) (0) | 2023.03.11 |
JS_κΈ°λ³Έ λ¬Έλ² (21)_ μΌκΈ κ°μ²΄ (0) | 2023.03.11 |
λκΈ