ν¨μλ? π‘
- μΌλ ¨μ κ³Όμ μ λ¬Έ(statement)λ‘ κ΅¬ννκ³ μ½λ λΈλ‘μΌλ‘ κ°μΈμ νλμ μ€ν λ¨μλ‘ μ μν κ²μ μλ―Ένλ€.
- ν¨μλ ν¨μ μ μλ₯Ό ν΅ν΄ μμ±νλ€.
*ν¨μμ ꡬμ±μμ
// ν¨μ μ μ
function add(x,y){
return x+y;
}
// ν¨μ νΈμΆ
var result = add(2,5);
// ν¨μ addμ μΈμ(argument) 2,5λ₯Ό μ λ¬νλ©΄μ νΈμΆνλ©΄ λ°νκ° 7μ λ°ννλ€.
console.log(result)
Key pointπ‘ μ½λμ μ¬μ¬μ©μ±
μ½λμ μ€λ³΅μ μ΅μ νκ³ μ¬μ¬μ©μ λμ΄λ ν¨μλ μ μ§λ³΄μμ νΈμμ±μ λμ΄κ³ μ½λμ μ λ’°μ±μ λμ΄λ ν¨κ³Όκ° μλ€.
μλ°μ€ν¬λ¦½νΈμ ν¨μλ κ°μ²΄ νμ μ κ°μ΄λ€. λ°λΌμ μ«μ κ°μ μ«μ 리ν°λ΄λ‘ μμ±νκ³ κ°μ²΄λ₯Ό κ°μ²΄ 리ν°λ΄λ‘ μμ±νλ κ²μ²λΌ ν¨μλ ν¨μ 리ν°λ΄λ‘ μμ±ν μ μλ€. ν¨μ 리ν°λ΄μ function ν€μλ, ν¨μμ΄λ¦, 맀κ°λ³μ λͺ©λ‘, ν¨μ λͺΈμ²΄λ‘ ꡬμ±λλ€.
// λ³μμ ν¨μ 리ν°λ΄μ ν λΉ
const f = function add(x,y){
return x+y
}
1) ν¨μ μ μΈλ¬Έ
function add(x,y){
return x+y
}
2) ν¨μ ννμ
const add = function(x,y){
return x+y
}
3) Function μμ±μ ν¨μ
// λ³μμ ν¨μ 리ν°λ΄μ ν λΉ
const add = new Function('x','y','return x+y')
4) νμ΄ν ν¨μ(ES6)
// λ³μμ ν¨μ 리ν°λ΄μ ν λΉ
const add = (x,y) => {
return x+y
}
1) ν¨μ μ μΈλ¬Έ(Function Declarations)
function ν¨μλͺ
() {
ꡬν λ‘μ§
}
// μμ
function funcDeclarations() {
return 'A function declaration';
}
funcDeclarations(); // 'A function declaration'
Key pointπ‘
- ν¨μ μ μΈλ¬Έμ ννμμ΄ μλ λ¬Έ(statement)μ΄λ€.
2) ν¨μ ννμ
var ν¨μλͺ
= function () {
ꡬν λ‘μ§
};
// μμ
var funcExpression = function () {
return 'A function expression';
}
funcExpression(); // 'A function expression'
3) ν¨μ μ μΈλ¬Έκ³Ό ννμμ μ°¨μ΄μ
Key pointπ‘
- ν¨μ μ μΈλ¬Έμ νΈμ΄μ€ν μ μν₯μ λ°μ§λ§, ν¨μ ννμμ νΈμ΄μ€ν μ μν₯μ λ°μ§ μλλ€.
- ν¨μ μ μΈλ¬ΈμΌλ‘ μ μν ν¨μμ ν¨μ ννμμΌλ‘ μ μν ν¨μμ μμ± μμ μ΄ λ€λ₯΄κΈ° λλ¬Έμ΄λ€.
// μ€ν μ
logMessage();
sumNumbers();
// ν¨μ μ μΈλ¬Έ
function logMessage() {
return 'worked';
}
// ν¨μ ννμ
var sumNumbers = function () {
return 10 + 20;
};
// μ€ν μ
function logMessage() {
return 'worked';
}
var sumNumbers;
logMessage(); // 'worked'
sumNumbers(); // Uncaught TypeError: sumNumbers is not a function
sumNumbers = function () {
return 10 + 20;
};
var
μ μν΄ νΈμ΄μ€ν
μ΄ μ μ©λμ΄ μμΉκ° μλ¨μΌλ‘ λμ΄μ¬λ €μ‘λ€.var sumNumbers;
logMessage();
sumNumbers();
νμ§λ§ μ€μ sumNumbers μ ν λΉλ function λ‘μ§μ νΈμΆλ μ΄νμ μ μΈλλ―λ‘, sumNumbers λ ν¨μλ‘ μΈμνμ§ μκ³ λ³μλ‘ μΈμνλ€.
λ³μ μ μΈμ λ°νμ μ΄μ μ μ€νλμ΄ undefined
λ‘ μ΄κΈ°νλμ§λ§ λ³μ ν λΉλ¬Έμ κ°μ ν λΉλ¬Έμ΄ μ€νλλ μμ , μ¦ λ°νμμ νκ°λλ―λ‘ ν¨μ ννμμ ν¨μ 리νΈλ΄λ ν λΉλ¬Έμ΄ μ€νλλ μμ μ νκ°λμ΄ ν¨μ κ°μ²΄κ° λλ€.
λ°λΌμ ν¨μ ννμμΌλ‘ μ μνλ©΄ ν¨μ νΈμ΄μ€ν μ΄ λ°μνλ κ²μ΄ μλλΌ λ³μ νΈμ΄μ€ν μ΄ λ°μνλ€.
1) ν¨μ ννμ μ₯μ
Key pointπ‘
- βν¨μ ννμμ΄ νΈμ΄μ€ν μ μν₯μ λ°μ§ μλλ€β λ νΉμ§ μ΄μΈμλ ν¨μ μ μΈμλ³΄λ€ μ μ©νκ² μ°μ΄λ κ²½μ°λ λ€μκ³Ό κ°λ€.
- ν΄λ‘μ Έλ‘ μ¬μ©
- μ½λ°±μΌλ‘ μ¬μ© (λ€λ₯Έ ν¨μμ μΈμλ‘ λκΈΈ μ μμ)
*ν¨μ ννμμΌλ‘ ν΄λ‘μ Έ μμ±νκΈ°
ν΄λ‘μ Έπ‘
- ν¨μλ₯Ό μ€ννκΈ° μ μ ν΄λΉ ν¨μμ λ³μλ₯Ό λκΈ°κ³ μΆμ λ μ¬μ©λλ€. λ μ½κ² μ΄ν΄νκΈ° μν΄ μλ μμ λ₯Ό μ΄ν΄λ³΄μ.
νμ΄ν ν¨μπ‘
- νμ΄ν ν¨μλ μμ±μ ν¨μλ‘ μ¬μ©ν μ μμΌλ©° κΈ°μ‘΄μ ν¨μμ this λ°μΈλ© λ°©μμ΄ λ€λ₯΄κ³ , prototype νλ‘νΌν°κ° μμΌλ©° arguments κ°μ²΄λ₯Ό μμ±νμ§ μλλ€.
μ¬κ· ν¨μπ‘
- μ¬κ· ν¨μλ μκΈ° μμ μ νΈμΆνλ νμλ₯Ό λ§νλ€. μ¬κ· ν¨μλ νμΆ μ‘°κ±΄μ΄ μμΌλ©΄ ν¨μκ° λ¬΄ν νΈμΆλμ΄ μ€ν μ€λ²νλ‘(stack overflow) μλ¬κ° λ°μνλ€.
μ½λ°± ν¨μπ‘
- ν¨μμ 맀κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ ν¨μμ λ΄λΆλ‘ μ λ¬λλ ν¨μλ₯Ό μ½λ°±ν¨μλΌκ³ νλ€.
κ³ μ°¨ν¨μπ‘
- 맀κ°λ³μλ₯Ό ν΅ν΄ ν¨μμ μΈλΆμμ μ½λ°± ν¨μλ₯Ό μ λ¬λ°μ ν¨μλ₯Ό κ³ μ°¨ν¨μ(HOF)λΌκ³ νλ€.