μ± <λ¬λμλ°μ€ν¬λ¦½νΈ>λ₯Ό κΈ°λ³ΈμΌλ‘ λ°°μ΄ μλ°μ€ν¬λ¦½νΈ λ΄μ©μ λλ€.
λͺ©μ°¨
- 1. μ¦μ μ€ν ν¨μ, IIFE
- 2. νΈμ΄μ€ν
- 3. μ¬κ°μ§λμ μ€νΈλ¦νΈ λͺ¨λ
<μ€μ½ν>
1. IIFE : μ¦μ νΈμΆνλ ν¨μ ννμ
1-1) μ¦μ μ€ν ν¨μμ κΈ°λ³Έ νμ
#μΌλ°μ μΈ ν¨μ ννμ
const g = function ν¨μμ΄λ¦(){
//...
}
#μ¦μ μ€ν ν¨μ ννμ
(function () {
//IIFE λ°λ
})()
1-2) μ¦μ μ€ν ν¨μμ μ’ λ₯
#1. κΈ°λͺ
μ¦μ μ€ν ν¨μ
(function square(x) {
console.log(x*x);
})(2);
#2. μ΅λͺ
μ¦μ μ€ν ν¨μ
(function (x) {
console.log(x*x);
})(2);
#3. λ³μμ μ¦μ μ€ν ν¨μ μ μ₯
(mySquare =function (x) {
console.log(x*x);
})(2);
mySquare(3);
1-3) IIFEμ μ₯μ : λ΄λΆμ μλ κ²λ€μ΄ λͺ¨λ μμ λ§μ μ€μ½νλ₯Ό κ°μ§μ§λ§, IIFEμ체λ ν¨μμ΄λ―λ‘ κ·Έ μ€μ½ν λ°μΌλ‘ 무μΈκ°λ₯Ό λ΄λ³΄λΌ μ μμ. ν΄λ‘μ λ₯Ό λ§λ€κ³ , ν΄λ‘μ μκ²μ 무μΈκ°λ₯Ό λ°νλ°μ λ μ μ©ν¨.
const message = (function() {
//IIFE λ°λ
const secret = "I am a secret!"; #μΈλΆμμ μ κ·Ό λΆκ°
return 'The secret is ${secret.length} characters long.';
})();
console.log(message);
2. νΈμ΄μ€ν : ν¨μ μμ μλ μ μΈλ€μ λͺ¨λ λμ΄μ¬λ €μ ν΄λΉ ν¨μ μ ν¨ λ²μμ μ΅μλ¨μ μ μΈνλ κ².
let ν€μλλ λ³μλ₯Ό μ μΈνκΈ° μ μλ κ·Έ λ³μλ μ‘΄μ¬νμ§ μμ§λ§, var ν€μλλ μ€μ½ν μμ΄λΌλ©΄ μ΄λμλ μ¬μ©κ°λ₯νκ³ , μ¬μ§μ΄ μ μΈλκΈ° μ μλ undefinedλ‘ λ³μ μ¬μ© κ°λ₯νλ€. → νΈμ΄μ€ν
- νΈμ΄μ€ν λ°μO : var λ³μ μ μΈ, ν¨μμ μΈλ¬Έ
- νΈμ΄μ€ν λ°μX : let · const λ³μ μ μΈ, ν¨μννμ
#ν¨μμ μΈλ¬Έ - νΈμ΄μ€ν
o
function foo() {
console.log("hello");
}
#ν¨μννμ - νΈμ΄μ€ν
x
var foo2 = function() {
console.log("hello2");
}
3. μ¬κ°μ§λμ μ€νΈλ¦νΈ λͺ¨λ
3-1) μ¬κ°μ§λ
μ¬κ°μ§λλ, letμΌλ‘ μ μΈνλ λ³μλ μ μΈνκΈ° μ κΉμ§ μ‘΄μ¬νμ§ μλλ€λ κ°λ μ΄λ€.
letμΌλ‘ μ μΈν λ³μλ μ‘΄μ¬λ₯Ό νμΈ(typeofμ°μ°μ μ΄μ©)νλ λ²λ¦μ κ°μ ΈμΌ μ¬κ°μ§λ errorκ° λμ§ μλλ€.
3-2) μ€νΈλ¦νΈ λͺ¨λ "use strict"
μμμ μ μ λ³μλ, varλ‘ λ³μ μ μΈνλ κ²μ μμ λ³μλ€μ μ μ λ³μλ‘ κ°μ£Όνλ κ²μ μλ―Ένλ€.
μ€νΈλ¦νΈ λͺ¨λλ μ΄λ¬ν μμμ μ μ λ³μλ₯Ό νμ©νμ§ μλλ€.
[μ°Έκ³ μ¬μ΄νΈ]
νΈμ΄μ€ν - https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
'π° μΈμ΄ > JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ°μ²΄ μ§ν₯ μΈμ΄ - νλ‘ν νμ κΈ°λ° μΈμ΄(JS) (0) | 2020.01.04 |
---|---|
λ°°μ΄κ³Ό λ°°μ΄μ²λ¦¬ (0) | 2020.01.03 |
μ€μ½ν(1) (0) | 2019.12.20 |
λ°μ΄ν° νμ & ν¨μ (0) | 2019.12.17 |
μλ°μ€ν¬λ¦½νΈ κ°λ°λꡬ - git, npm, gulp (0) | 2019.12.16 |