ν¨μ
μνμμμ ν¨μ
- μ
λ ₯(
input
)μ λ°μ μΆλ ₯(output
)μ λ΄λ³΄λ΄λ μΌλ ¨μ κ³Όμ μ μ μνλ‘κ·Έλλ° μΈμ΄μ ν¨μ
- μΌλ ¨μ κ³Όμ μ λ¬Έ(
statement
)μΌλ‘ ꡬννκ³ μ½λ λΈλ‘μΌλ‘ κ°μΈμ νλμ μ€ν λ¨μλ‘ μ μν κ² - ν¨μμ μ μλ₯Ό ν΅ν΄ μμ± ν¨μνΈμΆμ ν΅ν΄ μ€ν
ν¨μ μ¬μ© μ΄μ
- μ½λμ μ¬μ¬μ©μ ν΅ν μ€λ³΅ μ΅μν
- μ μ§ λ³΄μμ νΈμμ±
- μ½λ μ λ’°μ±
- μ½λμ κ°λ μ±
ν¨μ 리ν°λ΄
- μλ°μ€ν¬λ¦½νΈμ ν¨μλ κ°μ²΄ νμ μ κ° μ λλ€.
- ν¨μλ ν¨μ 리ν°λ΄λ‘ μμ± κ°λ₯ μ¦, ν¨μλ κ°μ²΄
- ν¨μλ₯Ό κ°μ²΄λ‘ μ·¨κΈνλ κ²μ jsμ νΉμ§
- μΌλ° κ°μ²΄λ νΈμΆν μ μμ§λ§ ν¨μλ νΈμΆ κ°λ₯
ν¨μ μ μ
- λ³μλ μ μΈ νλ€κ³ νμ§λ§ ν¨μλ μ μ νλ€κ³ ννν¨
- ν¨μ μ μλ 4κ°μ§ λ°©λ²μΌλ‘ κ°λ₯
- ν¨μ μ μΈλ¬Έ
- ν¨μ ννμ
- Function μμ±μ ν¨μ
- νμ΄ν ν¨μ(es6)
ν¨μ μ μΈλ¬Έ
- ν¨μ μ μΈλ¬Έμ ννμμ΄ μλ λ¬Έ
- ννμμ΄ μλ λ¬Έμ λ³μμ ν λΉν μ μλ€, κ·Έλ°λ° ν¨μ μ μΈλ¬Έμ λ³μμ ν λΉνλ κ² κ°λ₯
var add = function add(x,y){
return x + y;
}
// ν¨μ νΈμΆ
console.log(add(2,5)); // 7
- jsμμλ μ€μμ μΈ μ½λκ° μ‘΄μ¬νκΈ° λλ¬Έ
{}
μ λΈλ‘λ¬Έ μΌμλ μκ³ κ°μ²΄λ¦¬ν°λ΄ μΌμλ μλ€.μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ½λ λ¬Έλ§₯μ λ€λΌ ν΄μμ λ€λ₯΄κ² ν¨
- κΈ°λͺ
ν¨μ 리ν°λ΄(ν¨μμ΄λ¦)λ μ€μμ μΈ μ½λ
ν¨μ 리ν°λ΄μ λ¨λ μΌλ‘ μ¬μ© μ ν¨μ μ μΈλ¬ΈμΌλ‘ ν΄μ, λ³μν λΉ νΉμ νΌμ°μ°μλ‘ μ¬μ© μ ν¨μ 리ν°λ΄ ννμμΌλ‘ ν΄μ
- ν¨μ μ μΈ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μμ±λ ν¨μλ₯Ό νΈμΆνκΈ° μν΄ ν¨μ μ΄λ¦κ³Ό λμΌν μ΄λ¦μ μλ³μλ₯Ό μ묡μ μΌλ‘ μμ±νκ³ κ±°κΈ°μ ν¨μ κ°μ²΄λ₯Ό ν λΉ
- ν¨μλ ν¨μμ΄λ¦μΌλ‘ νΈμΆνλ κ²μ΄ μλλΌ ν¨μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μλ‘ νΈμΆν¨
ν¨μ ννμ
- μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ κ°μ²΄
μΌκΈ κ°μ²΄λ κ°μ μ±μ§μ κ°λ κ°μ²΄λ₯Ό λ§νλ€.
μλ°μ€ν¬λ¦½νΈμ ν¨μλ λ³μμν λΉ, νλ‘νΌν°μ κ°, λ°°μ΄μ μμ λ± κ°μ΄ λ μ μμΌλ―λ‘ μΌκΈκ°μ²΄ μ΄λ€ - ν¨μ 리ν°λ΄λ‘ μμ±ν κ°μ²΄λ₯Ό λ³μμ ν λΉν κ²μ ν¨μ ννμ μ΄λΌκ³ ν¨
- μ΄λ ν¨μ μ΄λ¦μ μλ΅νλ©΄ μ΅λͺ ν¨μ
ν¨μ μμ± μμ κ³Ό νΈμ΄μ€ν
- ν¨μ μ μΈλ¬Έκ³Ό ν¨μ ννμμΌλ‘ μ μν ν¨μλ κ°κ° μμ± μμ μ΄ λ€λ¦
// ν¨μ μ°Έμ‘°
console.dir(add); // Ζ add(x, y)
console.dir(sub); // undefined
// ν¨μ νΈμΆ
console.log(add(2, 5)); // 7
console.log(sub(2, 5)); // TypeError: sub is not a function
// ν¨μ μ μΈλ¬Έ
function add(x, y) {
return x + y;
}
// ν¨μ ννμ
var sub = function (x, y) {
return x - y;
};
- ν¨μ μ μΈλ¬Έμ λ³μ μ μΈ μ²λΌ λ°ν°μ μ΄μ μ νΈμ΄μ€ν λλ€.
- λ¨, ν¨μ μ μΈλ¬Έμ νΈμ΄μ€ν
μ λ³μ μ²λΌ
undefined
λ‘ μ΄κΈ°ν λλ κ² μλλΌ μ묡μ μΌλ‘ ν¨μ κ°μ²΄λ‘ μ΄κΈ°ν λλ€. - ν¨μ ννμμ λ³μμ ν¨μ 리ν°λ΄μ΄ ν λΉλ¨ μ¦ λ³μκ°
undefined
λ‘ νΈμ΄μ€ν λκ³ λ°νμμ ν¨μ 리ν°λ΄μ΄ νκ°λμ΄ ν¨μ κ°μ²΄ κ° λλ€. - μ 리 : ν¨μ ννμμ λ³μ νΈμ΄μ€ν λ°μ, ν¨μ ννμ μ¬μ©μ κΆμ₯
νμ΄ν ν¨μ
- κΈ°μ‘΄ ν¨μμ λΉκ΅νμ¬ ννκ³Ό λ΄λΆ λμμ΄ κ°λ΅ν λ¨
- μμ±μ ν¨μλ‘ μ¬μ©ν μ μλ€.
- this λ°μΈλ© λ°©μμ΄ κΈ°μ‘΄ ν¨μμ λ€λ¦
- prototype νλ‘νΌν°κ° μμ
- arguments κ°μ²΄λ₯Ό μμ±νμ§ μλλ€.
ν¨μ νΈμΆ
- ν¨μ νΈμΆ μ μΈμμ λ§€κ° λ³μμ κ°μκ° μΌμΉνλ μ§λ 체ν¬νμ§ μλλ€.
- μΈμκ° ν λΉλμ§ μμ 맀κ°λ³μλ
undefined
, μ΄κ³Όλ μΈμλ 무μ - ν¨μλ ν κ°μ§ μΌλ§ ν΄μΌ νλ©° κ°κΈμ μκ² λ§λ€μ΄μΌ νλ€.
return
ν€μλ λ€μ λ°νκ°μΌλ‘ μ¬μ© ν ννμμ λͺ μμ μΌλ‘ μ§μ νμ§ μμΌλ©΄undefined
κ° λ°νλλ€.
μ°Έμ‘°μ μν μ λ¬κ³Ό μΈλΆ μνμ λ³κ²½
- ν¨μ λ΄λΆμμ μ°Έμ‘° κ°μ λ³κ²½νλ©΄ μλ³Έ κ°μ²΄μ κ°μ΄ λ°λλ
side effect
κ° λ°μν μ μμ side effect
λν ν΄κ²°λ²- μ΅μ λ² ν¨ν΄ μ¬μ©
- κ°μ²΄λ₯Ό λΆλ³κ°μ²΄(
immutable object
)λ‘ λ§λ€μ΄ μ¬μ©κΉμ 볡μ¬λ₯Ό ν΅ν΄ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νκ³ μ¬ν λΉμ ν΅ν΄ κ΅μ²΄νλ λ°©λ²
- μΈλΆμνλ₯Ό λ³κ²½νμ§ μκ³ , μμ‘΄νμ§ μλ ν¨μλ₯Ό μμ ν¨μ λΌκ³ νλ€. (ν¨μν νλ‘κ·Έλλ°)
λ€μν ν¨μ νν
μ¦μ μ€νν¨μ
- ν¨μ μ μμ λμμ μ¦μ νΈμΆ λλ ν¨μλ₯Ό μ¦μ μ€ν ν¨μ(
IIFE : Immediately Invoked Function Expression
) λΌκ³ νλ€. - μ¦μ μ€ν ν¨μλ λ¨ νλ²λ§ νΈμΆλλ©° λ€μ νΈμΆν μ μμ΅λλ€.
// μ΅λͺ
μ¦μ μ€ν ν¨μ
(function () {
var a = 3;
var b = 5;
return a * b;
}());
// μ¦μ μ€ν ν¨μλ μΌλ° ν¨μμ²λΌ κ°μ λ°νν μ μλ€.
var res = (function () {
var a = 3;
var b = 5;
return a * b;
}());
console.log(res); // 15
// μ¦μ μ€ν ν¨μμλ μΌλ° ν¨μμ²λΌ μΈμλ₯Ό μ λ¬ν μ μλ€.
res = (function (a, b) {
return a * b;
}(3, 5));
console.log(res); // 15
- λ³μλ ν¨μ μ΄λ¦μ μΆ©λμ λ°©μ§νκΈ° μν΄ μ¬μ©
μ€μ²© ν¨μ
- ν¨μ λ΄λΆμ μ μλ ν¨μλ₯Ό μ€μ²© ν¨μ λλ λ΄λΆ ν¨μλΌκ³ νλ€.
- μ€μ²© ν¨μλ μΈλΆ ν¨μ λ΄λΆμμλ§ νΈμΆ κ°λ₯
- μΈλΆ ν¨μλ₯Ό λλ ν¬νΌν¨μμ μν μν¨
- μ€μ½ν, ν΄λ‘μ μ κ΄λ ¨
μ½λ°± ν¨μ
- ν¨μμ 맀κ°λ³μλ₯Ό ν΅ν΄ λ€λ₯Έ ν¨μμ λ΄λΆλ‘ μ λ¬λλ ν¨μλ₯Ό μ½λ°± ν¨μλΌκ³ ν©λλ€.
- 맀κ°λ³μλ₯Ό ν΅ν΄ ν¨μμ μΈλΆμμ μ½λ°± ν¨μλ₯Ό μ λ¬λ°μ ν¨μλ₯Ό κ³ μ°¨ ν¨μ(
HOF : Higher-Order Function
)μ΄λΌκ³ νλ€. - κ³ μ°¨ ν¨μλ μ½λ°± ν¨μλ₯Ό μμ μ μΌλΆλΆμΌλ‘ ν©μ±
- κ³ μ°¨ ν¨μλ μ λ¬ λ°μ μ½λ°± ν¨μμ νΈμΆ μμ μ κ²°μ
- μ½λ°± ν¨μλ κ³ μ°¨ ν¨μμ μν΄ νΈμΆ λλ©°, κ³ μ°¨ ν¨μλ νμμ λ°λ‘ μ½λ°± ν¨μμ μΈμλ₯Ό μ λ¬ν μ μλ€.
μμ ν¨μ
- ν¨μν νλ‘κ·Έλλ°μμ μ΄λ€ μΈλΆ μνμ μμ‘΄νμ§ μκ³ , λ³κ²½λ νμ§ μλ μ¦, λΆμν¨κ³Ό(
side effect
)κ° μλ ν¨μλ₯Ό μμ ν¨μ λΌκ³ νλ€. - νλ μ΄μμ μΈμλ₯Ό μ λ¬λ°μΌλ©°, μΈμ λ λμΌν κ°μ λ°ννλ€.
- μΈμλ₯Ό λ³κ²½νμ§ μλ κ²μ΄ κΈ°λ³Έ
var count = 0; // νμ¬ μΉ΄μ΄νΈλ₯Ό λνλ΄λ μν
// μμ ν¨μ increaseλ λμΌν μΈμκ° μ λ¬λλ©΄ μΈμ λ λμΌν κ°μ λ°ννλ€.
function increase(n) {
return ++n;
}
// μμ ν¨μκ° λ°νν κ²°κ³Όκ°μ λ³μμ μ¬ν λΉν΄μ μνλ₯Ό λ³κ²½
count = increase(count);
console.log(count); // 1
count = increase(count);
console.log(count); // 2
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[2μ£Όμ°¨ μ€ν°λ]14μ₯-μ μλ³μ λ¬Έμ μ (0) | 2022.02.06 |
---|---|
[2μ£Όμ°¨ μ€ν°λ]13μ₯- μ€μ½ν (0) | 2022.02.06 |
[2μ£Όμ°¨ μ€ν°λ]11μ₯-μμκ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.02.06 |
[2μ£Όμ°¨ μ€ν°λ]10μ₯-κ°μ²΄ 리ν°λ΄ (0) | 2022.02.06 |
[μ€ν°λ 1μ£Όμ°¨]9μ₯ νμ λ³ν μ λ¨μΆ νκ° (0) | 2022.02.04 |
λκΈ