μλ°μ€ν¬λ¦½νΈμ μΌκΈ κ°μ²΄κ° 무μμΈμ§ μμ보기 μ μ ν¨μμ μ μΈμκ³Ό ννμμ λν΄ μ§κ³ λμ΄κ°λ³΄κ² μ΅λλ€.
ν¨μ μ μΈμ & ν¨μ ννμ
μλ°μ€ν¬λ¦½νΈ ν¨μμλ μ μΈμ(Function Declarations)κ³Ό ννμ(Function Expressions)μ΄ μμ΅λλ€.
ν¨μ μ μΈμ
function f1() {
// ...
}
ν¨μ ννμ
- ννμμλ μλμ κ°μ΄ λκ°μ§ λ°©μμ΄ μμ΅λλ€.
const a = function f1() {
//...
};
const b = () => {
// νμ΄ν ν¨μ(Arrow Functions)
};
ννμμμλ λ³μμ ν¨μμ λ°νκ°μ΄ μλλΌ ν¨μ μ체λ₯Ό λ΄λ λͺ¨μμμ λλ€.
μ μΈμκ³Ό λ¬λ¦¬ λ³μμ ν¨μλ₯Ό μ΄λ»κ² λμ ν μ μλ κ²μΌκΉμ?
μ΄κ²μ μ΄ν΄νκΈ° μν΄ μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄μ μλ―Έλ₯Ό μ΄ν΄ν΄μΌ ν νμκ° μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈ μλ£ν
μλ°μ€ν¬λ¦½νΈμμ μλ£νμ ν¬κ² μμ μλ£νκ³Ό κ°μ²΄λ‘ λλ μ μμ΅λλ€.
μμ μλ£ν
- string
- number
- boolean
- undefined
- null
- symbol
κ°μ²΄
- λ°°μ΄ [ ]
- ν¨μ ( ) => { }
- κ°μ²΄ 리ν°λ΄ { }
λ°°μ΄κ³Ό ν¨μκ° κ°μ²΄μΈ μ΄μ λ 무μμΌκΉμ?
κ·Έκ²μ λ°λ‘ λ°°μ΄κ³Ό ν¨μκ° κ°μ²΄μ μ±μ§(μμ± μΆκ°/μμ /μμ )μ λͺ¨λ μ¬μ©ν μ μκΈ° λλ¬Έμ λλ€.
κ·Έλ λ€κ³ ν΄μ λ°°μ΄κ³Ό ν¨μλ₯Ό κ°μ²΄ 리ν°λ΄μ²λΌ μμ±μ μ‘°μνλ €κ³ μ¬μ©νμ§λ μμ΅λλ€.
λ°°μ΄μ μ°κ΄λ λ°μ΄ν°λ₯Ό λ¬ΆκΈ° μν¨μ΄κ³ , ν¨μλ νλμ λͺ©μ μ μννκΈ° μν λ 립μ μΈ μ½λλ₯Ό λ¬Άλ μν¨μΌλ‘ κ°μμ μ©λκ° μμ΅λλ€.
μμ±μ μ‘°μν΄μΌ νλ€λ©΄ κ°μ²΄ 리ν°λ΄μ μ¬μ©νλ©΄ λ©λλ€.
// κ°λ₯μ νμ§λ§ μ΄λ κ² μ¬μ©νμ§ μμ΅λλ€.
const f1 = () => {};
f1.abc = 1;
console.log(f1.abc); // 1
μΌκΈ κ°μ²΄λ?
μλ°μ€ν¬λ¦½νΈμμ λ°°μ΄κ³Ό ν¨μκ° κ°μ²΄λΌλ κ²μ μ΄ν΄νκ³ , μΌκΈ κ°μ²΄μ λν΄ μ΄μΌκΈ° ν΄λ³΄κ² μ΅λλ€.
μ μ
- λ€λ₯Έ κ°μ²΄λ€μ μΌλ°μ μΌλ‘ μ μ© κ°λ₯ν μ°μ°μ λͺ¨λ μ§μνλ κ°μ²΄λ₯Ό μΌκΈκ°μ²΄(first-class object)λΌκ³ ν©λλ€.
- μ¦, ν¨μλ₯Ό μΌλ°μ μΈ κ°μ²λΌ μ·¨κΈνλ κ²μ λλ€.
- 'first-class'λ μ¬μ©ν λ λ€λ₯Έ μμλ€κ³Ό μ°¨λ³μ λμ§ μλλ€λ μλ―Έμ λλ€.
- μλ°μ€ν¬λ¦½νΈμμ ν¨μλ μΌκΈκ°μ²΄μ λλ€.
- μΌκΈκ°μ²΄ κ°λ μ νλμ μΈμ΄μ μΈ νΉμ±μΌλ‘, μλ°μ€ν¬λ¦½νΈμλ§ κ΅νλμ§ μμ΅λλ€. (Python, Go, Java λλ€ λ±)
쑰건
μΌκΈ κ°μ²΄κ° λκΈ° μν 쑰건μ μ΄ν΄λ³΄κ² μ΅λλ€.
1. λ³μμ λμ ν μ μμ΅λλ€.
- ν¨μκ° μΌκΈ κ°μ²΄μ΄κΈ° λλ¬Έμ ν¨μ ννμμ΄ κ°λ₯ν©λλ€.
- μλ°μ€ν¬λ¦½νΈ ν¨μλ₯Ό λ³μμ λμ ν μ μλ€κ³ ν΄μ μλ£νμ΄ κ°μ²΄μμ μμμλ£νμΌλ‘ λ°λλ κ²μ μλλλ€.
const f1 = function () {
console.log("Hello World");
};
// μλ£ν νμΈ
console.log(typeof f1); // 'function'
2. ν¨μμ νλΌλ―Έν°λ‘ μ λ¬ν μ μμ΅λλ€.
- ν¨μκ° μΌκΈ κ°μ²΄μ΄κΈ° λλ¬Έμ μ½λ°± ν¨μλ₯Ό μ¬μ©ν μ μμ΅λλ€.
- λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬λλ ν¨μλ₯Ό μ½λ°± ν¨μ(callback function)λΌκ³ ν©λλ€.
// μμ : μ΄λ²€νΈ 리μ€λ λ±λ‘
button.addEventListener('click', () = > {
console.log('λ²νΌ ν΄λ¦')
});
3. ν¨μμ 리ν΄κ°μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
- ν¨μκ° μΌκΈ κ°μ²΄μ΄κΈ° λλ¬Έμ κ³ μ°¨ν¨μλ₯Ό λ§λ€ μ μμ΅λλ€.
- ν¨μλ₯Ό μΈμλ‘ μ λ¬λ°κ±°λ ν¨μλ₯Ό κ²°κ³Όλ‘ λ°ννλ ν¨μλ₯Ό κ³ μ°¨ν¨μ(high order function)λΌκ³ ν©λλ€.
- κ³ μ°¨ν¨μμ νμ©ν μ μλ μμλ‘ μ»€λ§(currying)μ΄ μμ΅λλ€. 컀λ§μ μλ μ¬λ¬ κ°μ μΈμλ₯Ό λ°λ ν¨μλ₯Ό λ¨μΌ μΈμλ₯Ό λ°λ ν¨μλ‘ λ³ννλ κΈ°λ²μ λλ€.
- μλ°μ€ν¬λ¦½νΈμμλ ν΄λ‘μ (ν¨μκ° μ μΈλ νκ²½μ κΈ°μ΅νλ ν¨μ)λ₯Ό ν΅ν΄ μΈλΆ λ³μλ₯Ό κ³μ μ¬μ©ν μ μλλ°, μ΄ λΆλΆμ 컀λ§μ νμ©νλ©΄ ν¨μμ μ¬μ¬μ©μ±μ λμΌ μ μμ΅λλ€.
const multiply = (a) => (b) => a * b;
const double = multiply(2);
const triple = multiply(3);
// aκ° κ°κ° 2, 3μ΄λΌλ κ²μ κΈ°μ΅νκ³ μμ΅λλ€.
double(5); // 2 * 4 = 10
triple(7); // 3 * 7 = 21
κ²°λ‘
- μλ°μ€ν¬λ¦½νΈμμ ν¨μλ μΌκΈκ°μ²΄μ λλ€.
- μΌκΈκ°μ²΄λ
- λ³μλ λ°μ΄ν°μ λ΄μ μ μμΌλ©°
- ν¨μμ νλΌλ―Έν°λ‘ μ λ¬ν μ μμΌλ©°
- ν¨μμ 리ν΄κ°μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
- λ°λΌμ ν¨μννμ, μ½λ°±ν¨μ, κ³ μ°¨ν¨μ λ±μ μ¬μ©μ΄ κ°λ₯ν©λλ€.
μ°Έκ³
'Language > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [JavaScript] parseInt( ) vs Number( ) (1) | 2024.08.27 |
|---|---|
| [JavaScript] for...in κ³Ό for...ofμ μ°¨μ΄ (0) | 2024.06.28 |
