ν¨μλ μΌλ ¨μ κ³Όμ μ λ¬ΈμΌλ‘ ꡬννκ³ μ½λ λΈλ‘μΌλ‘ κ°μΈμ νλμ μ€ν λ¨μλ‘ μ μν κ².
ν¨μ λ΄λΆλ‘ μ λ ₯μ μ λ¬ λ°λ λ³μλ₯Όλ§€κ°λ³μ
, μ λ ₯μμΈμ
, μΆλ ₯μλ°νκ°
μ΄λΌ νλ€. λν, ν¨μλ κ°μ΄λ©°, μ¬λ¬κ° μ‘΄μ¬ν μ μμΌλ―λ‘ νΉμ ν¨μλ₯Ό ꡬλ³νκΈ° μν΄ μλ³μμΈν¨μ μ΄λ¦
μ μ¬μ©ν μ μλ€.
// ν¨μ μ μ
function add(x, y) {
return x + y;
}
// ν¨μ νΈμΆ
var result = add(2,5);
// ν¨μ addμ μΈμ 2,5λ₯Ό μ λ¬νλ©΄μ νΈμΆνλ©΄ λ°νκ° 7μ λ°ννλ€.
console.log(result); // 7
ν¨μλ
ν¨μ μ μ
λ₯Ό ν΅ν΄ μμ±νλ©° μλ°μ€ν¬λ¦½νΈμ ν¨μλ λ€μν λ°©λ²μΌλ‘ μ μν μ μλ€.
ν¨μ μ μλ§μΌλ‘ ν¨μκ° μ€νλλ κ²μ μλλ€.ν¨μ νΈμΆ
μ ν΅ν΄μ ν¨μκ° μ€νλκ³ ν¨μλ₯Ό νΈμΆνλ©΄ λ°νκ°μ λ°ννλ€.
ν¨μλ κ°λ°μκ° μ€ν μμ μ κ²°μ ν μ μκ³ , λͺ λ²μ΄λ μ¬μ¬μ©μ΄ κ°λ₯νλ€. ν¨μλ λͺ λ²μ΄λ νΈμΆν μ μμΌλ―λ‘ μ½λμ μ¬μ¬μ©μ΄λΌλ μΈ‘λ©΄μμ λ§€μ° μ μ©νλ€.
μ½λμ μ€λ³΅μ μ΅μ νκ³ μ¬μ¬μ©μ±μ λμ΄λ ν¨μλ μ μ§λ³΄μμ νΈμμ±μ λμ΄κ³ μ€μλ₯Ό μ€μ¬ μ½λμ μ λ’°μ±μ λμ΄λ ν¨κ³Όκ° μλ€.
μ«μ κ°μ μ«μ 리ν°λ΄λ‘ μμ±νκ³ , κ°μ²΄λ₯Ό κ°μ²΄ 리ν°λ΄λ‘ μμ±νλ κ²μ²λΌ ν¨μλ ν¨μ 리ν°λ΄λ‘ μμ±ν μ μλ€. ν¨μ 리ν°λ΄μ
function ν€μλ
,ν¨μ μ΄λ¦
,맀κ°λ³μ λͺ©λ‘
,ν¨μ λͺΈμ²΄
λ‘ κ΅¬μ±λλ€.
// λ³μμ ν¨μ 리ν°λ΄μ ν λΉ
var f = function add(x,y) {
return x + y;
}
π‘ μΌλ° κ°μ²΄μ ν¨μ κ°μ²΄ μ°¨μ΄
ν¨μλ κ°μ²΄λ€ νμ§λ§ μΌλ° κ°μ²΄μλ λ€λ₯΄λ€. μΌλ° κ°μ²΄λ νΈμΆν μ μμ§λ§ ν¨μλ νΈμΆ ν μ μλ€. κ·Έλ¦¬κ³ μΌλ° κ°μ²΄μλ μλ ν¨μ κ°μ²΄λ§μ κ³ μ ν νλ‘νΌν°λ₯Ό κ°λλ€.
ν¨μμ μλ ν¨μλ₯Ό νΈμΆνκΈ° μ΄μ μ μΈμλ₯Ό μ λ¬λ°μ 맀κ°λ³μμ μ€νν λ¬Έλ€, κ·Έλ¦¬κ³ λ°νν κ°μ μ§μ νλ κ²μ λ§νλ€.
ν¨μλ₯Ό μ μνλ λ°©λ²μλν¨μ μ μΈλ¬Έ
ν¨μ ννμ
Function μμ±μ ν¨μ
νμ΄ν ν¨μ
κ° μλ€.
var add = function add(x, y) {
return x + y;
}
console.log(add(2,5)); // 7
μλ°μ€ν¬λ¦½νΈ μμ§μ μμ±λ ν¨μλ₯Ό νΈμΆνκΈ° μν΄ ν¨μ μ΄λ¦κ³Ό λμΌν μ΄λ¦μ μλ³μλ₯Ό μ묡μ μΌλ‘ μμ±νκ³ , κ±°κΈ°μ ν¨μ κ°μ²΄λ₯Ό ν λΉνλ€.
ν¨μλ ν¨μ μ΄λ¦μΌλ‘ νΈμΆνλ κ²μ΄ μλλΌ ν¨μ κ°μ²΄λ₯Ό κ°λ₯΄ν€λ μλ³μλ‘ νΈμΆνλ€. μ¦, ν¨μ μ μΈλ¬ΈμΌλ‘ μμ±ν ν¨μλ₯Ό νΈμΆν κ²μ ν¨μ μ΄λ¦ addκ° μλλΌ μλ°μ€ν¬λ¦ νΈ μμ§μ΄ μ묡μ μΌλ‘ μμ±ν μλ³μ addμΈ κ²μ΄λ€.
κ°μ μ±μ§μ κ°λ κ°μ²΄λ₯Ό μΌκΈ κ°μ²΄λΌ νκ³ , μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ κ°μ²΄λ€. ν¨μκ° μΌκΈ κ°μ²΄λΌλ κ²μ ν¨μλ₯Ό κ°μ²λΌ μμ λ‘κ² μ¬μ©ν μ μλ€λ μλ―Έμ΄λ©°, λ³μμ ν λΉν μ μλ€. μ΄λ¬ν ν¨μ μ μ λ°©μμ
ν¨μ ννμ
μ΄λΌ νλ€.
// ν¨μ ννμ
var add = fuction (x, y) {
return x + y;
};
console.log(add(2,5)); //7
// κΈ°λͺ
ν¨μ ννμ
var add = function foo(x,y) {
return x + y;
};
console.log(add(2,5)); //7
var add = new Function('x', 'y', 'return x + y');
console.log(add(2,5)); // 7
const add = (x,y) => x + y;
console.log(add(2,5)); //7
π‘ ν¨μ νΈμ΄μ€ν μ΄λ ?
ν¨μ μ μΈλ¬Έμ΄ μ½λμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ μλ°μ€ν¬λ¦½νΈ κ³ μ μ νΉμ§μ ν¨μ νΈμ΄μ€ν μ΄λΌ νλ€
맀κ°λ³μλ ν¨μλ₯Ό μ μν λ μ μΈνλ©°, ν¨μ λͺΈμ²΄ λ΄λΆμμ λ³μμ λμΌνκ² μ·¨κΈλλ€. μ¦, ν¨μκ° νΈμΆλλ©΄ ν¨μ λͺΈμ²΄ λ΄μμ μ묡μ μΌλ‘ 맀κ°λ³μκ° μμ±λκ³ μΌλ° λ³μμ λ§μ°¬κ°μ§λ‘
undefined
λ‘ μ΄κΈ°νλ μ΄ν μΈμκ° μμλλ‘ ν λΉλλ€.
맀κ°λ³μλ ν¨μ λͺΈμ²΄ λ΄λΆμμλ§ μ°Έμ‘°ν μ μκ³ ν¨μ λͺΈμ²΄ μΈλΆμμλ μ°Έμ‘°ν μ μλ€. μ¦, 맀κ°λ³μμ μ€μ½νλ ν¨μ λ΄λΆλ€.
맀κ°λ³μμ κ°μμ μΈμμ κ°μκ° μΌμΉνλμ§ μ²΄ν¬νμ§ μλλ€.
μΈμκ° μ΄κ³Όλλ©΄ μ무μ μΌλ‘arguments κ°μ²΄
μ νλ‘νΌν°λ‘ 보κ΄λλ€.
function add(x,y) {
return x + y;
}
console.log(add(2)); // NaN
console.log(add('a', 'b')) //
βοΈ μ μ½λμ κ²°κ³Όκ° λμ¨ μ΄μ
λ°λΌμ μλ°μ€ν¬λ¦½νΈμ κ²½μ° ν¨μλ₯Ό μ μν λ μ μ ν μΈμκ° μ λ¬λμλμ§ νμΈν νμκ° μλ€.
βοΈ ES6μμ λμ λ 맀κ°λ³μ κΈ°λ³Έκ°μ ν¨μ μν
function add(a=0, b=0,c=0) {
return a + b + c;
}
console.log(add(1,2,3)); // 6
console.log(add(1,2)); // 3
console.log(add(1)); // 1
console.log(add()); // 0
ν¨μμ 맀κ°λ³μλ μ½λλ₯Ό μ΄ν΄νλ λ° λ°©ν΄λλ μμμ΄λ―λ‘ μ΄μμ μΈ λ§€κ°λ³μλ 0κ°μ΄λ©° μ μμλ‘ μ’λ€. 맀κ°λ³μμ κ°μκ° λ§λ€λ κ²μ ν¨μκ° μ¬λ¬ κ°μ§ μΌμ νλ€λ μ¦κ±°μ΄λ―λ‘ λ°λμ§νμ§ μλ€. μ΄μμ μΈ ν¨μλ ν κ°μ§ μΌλ§ ν΄μΌ νλ©° κ°κΈμ μκ² λ§λ€μ΄μΌ νλ€.
ν¨μλ
return ν€μλ
μννμ(λ°νκ°)
μΌλ‘ μ΄λ€μ§λ°νλ¬Έ
μ μ¬μ©ν΄ μ€ν κ²°κ³Όλ₯Ό ν¨μ μΈλΆλ‘ λ°ν(return)ν μ μλ€.
λ°νλ¬Έ
μ λ κ°μ§ μν μ νλ€.
λ°νλ¬Έ
μ ν¨μμ μ€νμ μ€λ¨νκ³ ν¨μ λͺΈμ²΄λ₯Ό λΉ μ Έλκ°λ€. λ°λΌμ λ°νλ¬Έ μ΄νμ λ€λ₯Έ λ¬Έμ΄ μ‘΄μ¬νλ©΄ κ·Έ λ¬Έμ μ€νλμ§ μκ³ λ¬΄μλλ€.λ°νλ¬Έ
μreturn
ν€μλ λ€μ μ€λ ννμμ νκ°ν΄ λ°ννλ€.return
ν€μλ λ€μ λ°νκ°μΌλ‘ μ¬μ©ν ννμμ λͺ μμ μΌλ‘ μ§μ νμ§ μμΌλ©΄undefined
κ° λ°νλλ€.
κ°μ²΄ νμ μΈμλ μ°Έμ‘° κ°μ΄ 볡μ¬λμ΄ λ§€κ°λ³μμ μ λ¬λκΈ° λλ¬Έμ ν¨μ λͺΈμ²΄μμ μ°Έμ‘° κ°μ ν΅ν΄ κ°μ²΄λ₯Ό λ³κ²½ν κ²½μ° μλ³Έμ΄ νΌμλλ€. λ€μ λ§ν΄ μΈλΆμν μ¦ ν¨μ μΈλΆμμ ν¨μ λͺΈμ²΄ λ΄λΆλ‘ μ λ¬ν μ°Έμ‘°κ°μ μν΄ μλ³Έ κ°μ²΄κ° λ³κ²½λλ λΆμ ν¨κ³Όκ° λ°μνλ€.
μ΄λ¬ν λ¬Έμ ν΄κ²° λ°©λ²
- κ°μ²΄λ₯Ό λΆλ³ κ°μ²΄λ‘ λ§λ€μ΄ μ¬μ©νλ κ²
- κΉμ 볡μ¬
ν¨μ μ μμ λμμ μ¦μ νΈμΆλλ ν¨μλ₯Ό
μ¦μ μ€νν¨μ
λΌκ³ νλ©°, μ¦μ μ€ν ν¨μλ λ¨ ν λ²λ§ νΈμΆλλ©° λ€μ νΈμΆν μ μλ€.
// μ΅λͺ
μ¦μ μ€ν ν¨μ
(function () {
var a = 3;
var b = 5;
return a * b;
}());
// κΈ°λͺ
μ¦μ μ€ν ν¨μ
(function () {
var a = 3;
var b = 5;
return a * b;
}());
// λ³΄ν΅ μ¦μ μ€ν ν¨μλ μ΅λͺ
μ¦μ μ€ν ν¨μκ° μΌλ°μ μ΄λ€.
(function () {
// ...
}())
(function () {
// ...
})();
!function () {
// ...
}()
+function () {
// ...
}();
// μ¦μ μ€ν ν¨μ μμ λ€μ΄λ©° 첫λ²μ§Έ λ°©μμ΄ κ°μ₯ μΌλ°μ μ΄λ€.
ν¨μκ° μκΈ° μμ μ νΈμΆνλ κ²μ
μ¬κ· νΈμΆ
μ΄λΌ νλ€.μ¬κ· ν¨μ
λ μκΈ° μμ μ νΈμΆνλ ν΄μ, μ¦ μ¬κ· νΈμΆμ μννλ ν¨μλ₯Ό λ§νλ€.
μ¬κ· ν¨μλ μμ μ 무ν μ¬κ· νΈμΆνλ€. λ€λΌμ μ¬κ· ν¨μλ₯Ό λ©μΆ μ μλ νμΆ μ‘°κ±΄μ λ°λμ λ§λ€μ΄μΌ νλ€
// λ°λ³΅λ¬Έ
function countdown(n) {
for (let i = n; i >= 0; i--) console.log(i);
}
countdown(10)
// μ¬κ· ν¨μ
function countdown(n) {
if(n<0) return;
console.log(n);
countdown(n - 1); // μ¬κ· νΈμΆ
}
countdown(10)
ν¨μ λ΄λΆμ μ μλ ν¨μλ₯Ό
μ€μ²© ν¨μ
λλλ΄λΆ ν¨μ
λΌ νλ€. κ·Έλ¦¬κ³ μ€μ²© ν¨μλ₯Ό ν¬ν¨νλ ν¨μλμΈλΆ ν¨μ
λΌ λΆλ₯Έλ€.
function outer() {
var x =1 1;
// μ€μ²© ν¨μ
function inner() {
var y = 2;
// μΈλΆ ν¨μμ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
console.log(x + y); // 3
}
inner();
}
outer();
ν¨μμ 맀κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ ν¨μμ λ΄λΆλ‘ μ λ¬λλ ν¨μλ₯Ό
μ½λ°± ν¨μ
λΌκ³ νλ€
λ§€κ° λ³μλ₯Ό ν΅ν΄ ν¨μμ μΈλΆμμ μ½λ°± ν¨μλ₯Ό μ λ¬λ°μ ν¨μλ₯Ό
κ³ μ°¨ ν¨μ
λΌκ³ νλ€.
κ³ μ°¨ ν¨μ
λμ½λ°± ν¨μ
λ₯Ό μμ μ μΌλΆλΆμΌλ‘ ν©μ±νλ€.
κ³ μ°¨ ν¨μ
λ 맀κ°λ³μλ₯Ό ν΅ν΄ μ λ¬λ°μμ½λ°± ν¨μ
μ νΈμΆ μμ μ κ²°μ ν΄μ νΈμΆνλ€.
μ½λ°± ν¨μ
λκ³ μ°¨ ν¨μ
μ μν΄ νΈμΆλλ©° μ΄λκ³ μ°¨ ν¨μ
λ νμμ λ°λΌμ½λ°± ν¨μ
μ μΈμλ₯Ό μ λ¬ν μ μλ€.
function repeat(n, f) {
for (var i = 0; i < n; i++) {
f(i) // μ½λ°± ν¨μ
}
}
var logAll = function (i) { // μ½λ°± ν¨μ
console.log(i)
};
reapeat(5,logAll) // κ³ μ°¨ ν¨μ νΈμΆ
var logOdds = function (i) {
if (i%2) console.log(i);
};
reapeat(5, logOdds); // 1
μ΄λ€ μΈλΆ μνμ μμ‘΄νμ§λ μκ³ λ³κ²½νμ§λ μλ, λΆμ ν¨κ³Όκ° μλ ν¨μλ₯Ό
μμ ν¨μ
μΈλΆ μνμ μμ‘΄νκ±°λ μΈλΆ μνλ₯Ό λ³κ²½νλ, λΆμ ν¨κ³Όκ° μλ ν¨μλ₯ΌλΉμμ ν¨μ
μΈλΆ μνμλ μμ‘΄νμ§ μκ³ ν¨μ λ΄λΆ μνμλ§ μμ‘΄νλ€κ³ ν΄λ κ·Έ λ΄λΆ μνκ° νΈμΆλ λλ§λ€ λ³ννλ κ°μ΄λΌλ©΄ μμ ν¨μκ° μλ!
π‘ ν¨μν νλ‘κ·Έλλ° μ΄λ?
μμ ν¨μμ 보쑰 ν¨μμ μ‘°ν©μ ν΅ν΄ μΈλΆ μνλ₯Ό λ³κ²½νλ λΆμ ν¨κ³Όλ₯Ό μ΅μνν΄μ λΆλ³μ±μ μ§ν₯νλ νλ‘κ·Έλλ° ν¨λ¬λ€μ. λ‘μ§ λ΄μ μ‘΄μ¬νλ 쑰건문과 λ°λ³΅λ¬Έμ μ κ±°ν΄μ λΆλ³μ±μ ν΄κ²°νλ©°, λ³μ μ¬μ©μ μ΅μ νκ±°λ μλͺ μ£ΌκΈ°λ₯Ό μ΅μνν΄μ μν λ³κ²½μ νΌν΄ μ€λ₯λ₯Ό μ΅μννλ κ²μ λͺ©νλ‘ νλ€.
μλ°μ€ν¬λ¦½νΈλ λ©ν° ν¨λ¬λ€μ μΈμ΄μ΄λ―λ‘ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° λΏλ§ μλλΌ ν¨μν νλ‘κ·Έλλ°μ μ κ·Ήμ μΌλ‘ νμνκ³ μλ€!