μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- float
- λ°λΈμ½μ€3κΈ°
- useRef
- νλ‘ νΈμλ
- νλ‘κ·Έλλ¨Έμ€
- μ½λ©ν μ€νΈ
- position
- useEffect
- fetch API
- λΈλ‘κ·Έ
- Flex
- history api
- μλ°μ€ν¬λ¦½νΈ
- λ°λΈμ½μ€
- REACT
- μκ³ λ¦¬μ¦
- CSS
- Gatsby
- Props
- Today
- Total
Daehyunii's Dev-blog
24μ₯ ν΄λ‘μ λ³Έλ¬Έ
24μ₯ ν΄λ‘μ
Daehyunii 2022. 7. 22. 16:13ν΄λ‘μ μ ν΅μ¬ ν€μλλ 'ν¨μκ° μ μΈλ λ μ컬 νκ²½'μ΄λ€.
24.1 λ μ컬 μ€μ½ν
μλ°μ€ν¬λ₯΄λ¦½νΈ μμ§μ ν¨μλ₯Ό μ΄λμ νΈμΆνλμ§κ° μλλΌ ν¨μλ₯Ό μ΄λμ μ μνλμ§μ λ°λΌ μμ μ€μ½νλ₯Ό κ²°μ νλ€. μ΄λ₯Ό λ μ컬 μ€μ½ν(μ μ μ€μ½ν)λΌ νλ€. (κ΄λ ¨λ λ΄μ©μ 13μ₯ μ€μ½ν μ 리λ₯Ό 보면 μμΈνκ² μ μ μλ€.)
κ·Έλ¦¬κ³ κ²°κ΅ μ€μ½νμ μ€μ²΄λ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μ΄λ€.μ΄ λ μ컬 νκ²½μ μμ μ μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°λ₯Ό ν΅ν΄ μμ λ μ컬 νκ²½κ³Ό μ°κ²°λλ€. μ΄κ²μ΄ λ°λ‘ μ€μ½ν 체μΈμ΄λ€. λ μ컬 νκ²½μ 'μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°'μ μ μ₯ν μ°Έμ‘°κ°μ΄ λ°λ‘ μμ λ μ컬 νκ²½μ λν μ°Έμ‘°μ΄λ©°, μ΄κ²μ΄ μμ μ€μ½νμ΄λ€.
24.2 ν¨μ κ°μ²΄μ λ΄λΆ μ¬λ‘― [[Environment]]
ν¨μκ° μ μλ μμΉμ νΈμΆλλ μμΉλ λ€λ₯Ό μ μλ€. λ°λΌμ λ μ컬 μ€μ½νκ° κ°λ₯νλ €λ©΄ ν¨μλ μμ μ΄ νΈμΆλλ νκ²½κ³Όλ μκ΄μμ΄ μμ μ΄ μ μλ νκ²½, μ¦ μμ μ€μ½ν(ν¨μ μ μκ° μμΉνλ μ€μ½νκ° λ°λ‘ μμ μ€μ½νλ€)λ₯Ό κΈ°μ΅ν΄μΌ νλ€. μ΄λ₯Ό μν΄ ν¨μλ μμ μ λ΄λΆ μ¬λ‘― [[Environment]]μ μμ μ΄ μ μλ νκ²½, μ¦ μμ μ€μ½νμ μ°Έμ‘°λ₯Ό μ μ₯νλ€. λ€μ λ§ν΄, ν¨μ κ°μ²΄μ λ΄λΆ μ¬λ‘― [[Environment]]μ μ μ₯λ νμ¬ μ€ν μ€μΈ μ€ν 컨ν μ€νΈμ λ μ컬 νκ²½μ μ°Έμ‘°κ° λ°λ‘ μμ μ€μ½νλ€. λν μμ μ΄ νΈμΆλμμ λ μμ±λ ν¨μ λ μ컬 νκ²½μ 'μΈλΆ λ μ컬 νκ²½μ λν μ°Έμ‘°'μ μ μ₯λ μ°Έμ‘°κ°μ΄λ€. ν¨μ κ°μ²΄λ λ΄λΆ μ¬λ‘― [[Environment]]μ μ μ₯ν λ μ컬 νκ²½μ μ°Έμ‘°, μ¦ μμ μ€μ½νλ₯Ό μμ μ΄ μ‘΄μ¬νλ ν κΈ°μ΅νλ€.
24.3 ν΄λ‘μ μ λ μ컬 νκ²½
const x = 1;
function outer(){
const x = 10;
const inner = function(){
console.log(x);
};
return inner;
}
// outer ν¨μλ₯Ό νΈμΆνλ©΄ μ€μ²© ν¨μ innerλ₯Ό λ°ννλ€.
// κ·Έλ¦¬κ³ outer ν¨μμ μ€ν 컨ν
μ€νΈλ μ€ν 컨ν
μ€νΈ μ€νμμ νλμ΄ μ κ±°λλ€.
const innerFunc = outer();
innerFunc(); // 10
// outerν¨μμ μ€ν 컨ν
μ€νΈκ° μ κ±°λμμμλ inner μ€μ²© ν¨μλ outer μΈλΆ ν¨μμ μ§μ λ³μ xλ₯Ό μ°Έμ‘°νλ€.
μμ μμ μ²λΌ μΈλΆ ν¨μλ³΄λ€ μ€μ²© ν¨μκ° λ μ€λ μ μ§λλ κ²½μ° μ€μ²© ν¨μλ μ΄λ―Έ μλͺ μ£ΌκΈ°κ° μ’ λ£ν μΈλΆ ν¨μμ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€. μ΄λ¬ν μ€μ²© ν¨μλ₯Ό ν΄λ‘μ λΌκ³ λΆλ₯Έλ€. μ¦, ν΄λ‘μ λ μ΄λ―Έ μ’ λ£ν μΈλΆν¨μμ λ³μλ₯Ό μ°Έμ‘°ν μ μλ μ€μ²© ν¨μλ₯Ό μλ―Ένλ€. μλ°μ€ν¬λ¦½νΈμ λͺ¨λ ν¨μλ μμ μ μμ μ€μ½νλ₯Ό κΈ°μ΅νκ³ μλλ€κ³ νλλ°, λͺ¨λ ν¨μκ° κΈ°μ΅νλ μμ μ€μ½νλ ν¨μλ₯Ό μ΄λμ νΈμΆνλ μκ΄μμ΄ μ μ§λλ€. λ°λΌμ ν¨μλ₯Ό μ΄λμ νΈμΆνλ μκ΄μμ΄ ν¨μλ μΈμ λ μμ μ΄ κΈ°μ΅νλ μμ μ€μ½νμ μλ³μλ₯Ό μ°Έμ‘°ν μ μμΌλ©° μλ³μμ λ°μΈλ©λ κ°μ λ³κ²½ν μλ μλ€.
μ μμ λ₯Ό λ€μ μ΄ν΄ 보면 outer ν¨μλ inner ν¨μλ₯Ό λ°ννκ³ μ€ν 컨ν μ€νΈκ° μ κ±°λμ§λ§ κ·Έλ λ€κ³ outer ν¨μμ λ μ컬 νκ²½κΉμ§ μλ©Ένλ κ²μ μλλ€. κ·Έλμ μ°Έμ‘°κ° inner ν¨μκ° outer ν¨μμ μ§μ λ³μλ₯Ό μ°Έμ‘°ν μ μλ κ²μ΄λ€. outer ν¨μμ λ μ컬 νκ²½μ inner ν¨μμ [[Environment]] λ΄λΆ μ¬λ‘―μ μν΄ μ°Έμ‘°λκ³ μκ³ inner ν¨μλ μ μ λ³μ innerFuncμ μν΄ μ°Έμ‘°λκ³ μμΌλ―λ‘ κ°λΉμ§ 컬λ μ μ λμμ΄ λμ§ μκΈ° λλ¬Έμ΄λ€.(κ°λΉμ§ 컬λ μ μ λκ΅°κ°κ° μ°Έμ‘°νκ³ μλ λ©λͺ¨λ¦¬ 곡κ°μ ν¨λΆλ‘ ν΄μ νμ§ μλλ€.) μ΄κ²μ΄ λ°λ‘ ν΄λ‘μ μ μ리μ΄λ€.
μΌλ°μ μΌλ‘ ν΄λ‘μ λΌκ³ λΆλ¦¬λ κ²μ μ€μ²© ν¨μκ° μμ μ€μ½νμ μ€λ²½μλ₯Ό μ°Έμ‘°νκ³ μκ³ μ€μ²© ν¨μκ° μΈλΆ ν¨μλ³΄λ€ λ μ€λ μ μ§λλ κ²½μ°μ νμ νλ€. λ°λλ‘, μ€μ²© ν¨μκ° μΈλΆ ν¨μλ³΄λ€ μλͺ μ£ΌκΈ°κ° μ§§κ±°λ, μ€μ²© ν¨μκ° μΈλΆ ν¨μλ³΄λ€ μλͺ μ£ΌκΈ°λ κΈΈμ§λ§ μΈλΆ ν¨μμ μλ³μλ₯Ό μ°Έμ‘°νμ§ μλ κ²½μ°λ μΌλ°μ μΌλ‘ ν΄λ‘μ λΌκ³ νμ§ μλλ€. ν΄λ‘μ μ μν΄ μ°Έμ‘°λλ μμ μ€μ½νμ λ³μλ₯Ό μμ λ³μλΌκ³ λΆλ₯Έλ€.
24.4 ν΄λ‘μ μ νμ©
ν΄λ‘μ λ μνλ₯Ό μμ νκ² λ³κ²½νκ³ μ μ§νκΈ° μν΄ μ¬μ©νλ€. λ€μ λ§ν΄, μνκ° μλμΉ μκ² λ³κ²½λμ§ μλλ‘ μνλ₯Ό μμ νκ² μλνκ³ νΉμ ν¨μμκ²λ§ μν λ³κ²½μ νμ©νκΈ° μν΄ μ¬μ©νλ€.
// ν¨μκ° νΈμΆλ λλ§λ€ νΈμΆλ ν루λ₯Ό λμ νμ¬ μΆλ ₯νλ μΉ΄μ΄ν°
let num = 0;
const increase = function(){
return ++num;
};
console.log(increase()); // 1
console.log(increase()); // 2
console.log(increase()); // 3
μ μ½λλ μ λμνμ§λ§ μ€λ₯λ₯Ό λ°μμν¬ κ°λ₯μ±μ΄ μλ€. μ μ½λμμ num λ³μμ κ°μ increase ν¨μκ° νΈμΆλκΈ° μ κΉμ§ λ³κ²½λμ§ μκ³ μ μ μ§ λμ΄μΌ νκ³ , num λ³μμ κ°μ increase ν¨μλ§μ΄ λ³κ²½ν μ μλλ‘ λ§λ€μ΄μΌ κ°μ₯ μμ ν κ²μ΄λ€. κ·Έλ¬λ num λ³μλ μ μ λ³μλ₯Ό ν΅ν΄ κ΄λ¦¬λκ³ μκΈ° λλ¬Έμ μΈμ λ μ§ λꡬλ μ κ·Όν μ μκ³ λ³κ²½ν μ μλ€. μ΄κ²μ΄ 곧 μ€λ₯λ‘ μ΄μ΄μ§λ€. μ΄λ₯Ό ν΄λ‘μ λ‘ ν΄κ²°ν μ μλ€.
const increase = (function(){
let num = 0;
return function(){
return ++num;
};
}());
console.log(increase());
console.log(increase());
console.log(increase());
μ μ½λκ° μ€νλλ©΄ μ¦μ μ€ν ν¨μκ° νΈμΆλκ³ μ¦μ μ€ν ν¨μκ° λ°νν ν¨μκ° increase λ³μμ ν λΉλλ€. increase λ³μμ ν λΉλ ν¨μλ μμ μ΄ μ μλ μμΉμ μν΄ κ²°μ λ μμ μ€μ½νμΈ μ¦μ μ€ν ν¨μμ λ¦μ컬 νκ²½μ κΈ°μ΅νλ ν΄λ‘μ λ€. μ μ½λμ ν΄λ‘μ μ²λΌ μνκ° μλμΉ μκ² λ³κ²½λμ§ μλλ‘ μμ νκ² μλνκ³ νΉμ ν¨μμκ²λ§ μν λ³κ²½μ νμ©νμ¬ μνλ₯Ό μμ νκ² μ μ§νκΈ° μν΄ ν΄λ‘μ λ₯Ό μ¬μ©νλ€.
λ³μ κ°μ λκ΅°κ°μ μν΄ μΈμ λ μ§ λ³κ²½λ μ μμ΄ μ€λ₯ λ°μμ 근볡μ μμΈμ΄ λ μ μλ€. μΈλΆ μν λ³κ²½μ΄λ κ°λ³ λ°μ΄ν°λ₯Ό νΌνκ³ λΆλ³μ±μ μ§ν₯νλ ν¨μν νλ‘κ·Έλλ°μμ λΆμ ν¨κ³Όλ₯Ό μ΅λν μ΅μ νμ¬ μ€λ₯λ₯Ό νΌνκ³ νλ‘κ·Έλ¨μ μμ μ±μ λμ΄κΈ° μν΄ ν΄λ‘μ λ μ κ·Ήμ μΌλ‘ μ¬μ©λλ€.
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
26μ₯ ES6 ν¨μμ μΆκ° κΈ°λ₯ (0) | 2022.07.26 |
---|---|
25μ₯ ν΄λμ€ (0) | 2022.07.26 |
23μ₯ μ€ν 컨ν μ€νΈ (0) | 2022.07.20 |
22μ₯ this (0) | 2022.07.19 |
21μ₯ λΉνΈμΈ κ°μ²΄ (0) | 2022.07.18 |