[Js λ₯λ€μ΄λΈ] 12. ν¨μ (2)
3. ν¨μ νΈμΆ
π λ§€κ°λ³μμ μΈμ
μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄μ΄κΈ° λλ¬Έμ, ν¨μλ₯Ό μ μν λ μ¬μ©νλ λ§€κ°λ³μμ νΈμΆν λ μ¬μ©νλ μΈμμ νμ κ³Ό κ°―μμ μ νμ΄ μλ€.
μΈμμ κ°―μκ° λ§€κ°λ³μμ κ°―μλ³΄λ€ λ§κ±°λ μ λλΌλ μλ¬λ λ°μνμ§ μλλ€.
function add(x, y){
return x + y;
}
console.log(add(2, 4)); // 6
// μΈμκ° λΆμ‘±ν κ²½μ° λ§€κ°λ³μ yμ ν λΉλ κ°μ΄ μμΌλ―λ‘ undefined
console.log(add(2)); // NaN
// μ΄κ³Όλ μΈμλ arguments κ°μ²΄μ 보쑴λλ€
console.log(add(2, 4, 10)); // 6
μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄μ΄κΈ° λλ¬Έμ, ν¨μλ₯Ό μ μνλ μμ μ λ§€κ°λ³μμ νμ μ κ²°μ ν μ μλ€.
λ°λΌμ ν¨μλ₯Ό λ§λ μλμλ λ€λ₯Έ νμ μ μΈμλ₯Ό μ¬μ©ν΄μ νΈμΆ νλλΌλ, μλ¬ μμ΄ ν¨μκ° μ€νλλ€.
λΆμ μ ν νΈμΆμ μ¬μ μ 미리 λ°©μ§ν μ μλ λ¬Έμ μ μ΄ λ°μνλ€.
π μΈμμ νμ νμΈνκΈ°
function add(x, y){
if(typeof x !== 'number' || typeof y !== 'number'){
throw new Error("μΈμλ μ«μ ννμ κ°μ΄μ¬μΌ ν©λλ€.")
}
return x + y;
}
console.log(add(2));
console.log(add('a','b'))
μ΄λ κ² ν¨μλ΄λΆμμ μΈμλ‘ μ λ¬λλ κ°μ νμ μ νμΈνλλΌλ, μΌλ¨ νΈμΆμ λλ€.
μ μ νμ μ μ¬μ©ν μ μλ νμ μ€ν¬λ¦½νΈ μμλ μ΄λ¬ν λ¬Έμ μ λ€μ ν΄κ²°ν μ μλ€.
π λ§€κ°λ³μμ μΈμμ μμΈ μ²λ¦¬νκΈ°
// es5 function
function add(x, y){
// x κ° μ λ¬λμ§ μμΌλ©΄, undefined λ‘ μ΄κΈ°ν λκ³ undefined || 0 μ λ¨μΆνκ°μ μν΄μ 0 μ΄ λλ€.
x = x || 0;
y = y || 0;
return x + y;
}
console.log(add(2)) // 2
// es6 function
function add(x = 0, y = 0){
return x + y;
}
console.log(add(2)) // 2
// λ§€κ°λ³μμ μΈμλ₯Ό μ λ¬νμ§ μμ κ²½μ°
function add(x, y){
return x + y;
}
console.log(add(2)) // y λ undefined λ‘ ν λΉλ¨. 2 + undefined = NaN
π λ°νλ¬Έ
ν¨μ νΈμΆμ ννμμ΄λ€, μ¦ ν¨μλ₯Ό νΈμΆνλ©΄ κ°μΌλ‘ νκ°λλ κ²°κ³Όκ° λμμΌ νλλ° μ΄λ return ν€μλλ₯Ό μ¬μ©ν΄μ νκ° κ²°κ³Όλ₯Ό λ°νν΄μ€λ€
- return λ°νλ¬Έ μ΄νμ λ€λ₯Έ λ¬Έμ΄ μμ΄λ μ€ννμ§ μκ³ λ¬΄μνκ³ ν¨μλ₯Ό μ’ λ£νλ€
- λ°νλ¬Έμ μλ΅ν μ μκ³ , μ΄λ μ묡μ μΌλ‘ undefined λ₯Ό λ°ννλ€
- λ°νλ¬Έμμ μ€λ°κΏμ ν΄μλ μλλ€
4. μ°Έμ‘°μ μν μ λ¬κ³Ό μΈλΆ μν λ³κ²½
λ§€κ°λ³μλ ν¨μ λ΄λΆμμ λ³μμ λμΌνκ² μ·¨κΈλλ―λ‘ λ§€κ°λ³μμ νμ μ λ°λΌμ κ°μμν μ λ¬, μ°Έμ‘°μ μν μ λ¬λ‘ λλ μ μλ€.
var user = {
id : "woong",
}
var age = 24;
function changeValue(primitive, obj){
primitive += 10;
obj.id = 'hyun'
console.log(primitive); // 34
}
changeValue(age, user)
console.log(age); // 24
console.log(user.id); // hyun
- μμ νμ μ κ°μ λ§€κ°λ³μλ‘ μ λ¬ λλ©΄, κ° μμ²΄κ° λ³΅μ¬λμ΄ μ λ¬λκΈ° λλ¬Έμ ν¨μ λ΄λΆμμλ λ³κ²½μ΄ κ°λ₯νμ§λ§ λ§€κ°λ³μλ‘ μ λ¬λλ μΈμ νμ μ κ°μ΄ μ€μ λ‘ μ μ₯λμ΄ μλ λ©λͺ¨λ¦¬ μμ μ£Όμλ₯Ό μ°Έμ‘°ν μ μκΈ° λλ¬Έμ ν¨μ μΈλΆμ μλ μλ³Έ κ°μ λ³κ²½ν μ μλ€.
- κ°μ²΄ νμ μ κ°μ λ§€κ°λ³μλ‘ μ λ¬ λλ©΄, μ°Έμ‘° κ°μ΄ μ λ¬λκΈ° λλ¬Έμ ν¨μ μΈλΆμ μλ κ°μ²΄μ μ§μ μ κ·Όμ΄ κ°λ₯νλ€. λ°λΌμ ν¨μ λ΄λΆμμ μλ³Έ κ°μ λ³κ²½νλ©΄ ν¨μ μΈλΆμ μλ μλ³Έ κ°μ²΄μ κ°λ λ³κ²½λλ€.
π§ νλ‘κ·Έλ¨μ ν¬κΈ°κ° μ»€μ Έμ A λΌλ κ°μ²΄λ₯Ό λ§€κ°λ³μλ‘ λ°λ ν¨μκ° μ¬λ¬κ°μΈ κ²½μ°
μ΄λ€ ν¨μ λ΄λΆμμ κ°μ²΄μ μνκ° λ³κ²½λλ€λ©΄ μ΄ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλ λͺ¨λ ν¨μμ λ³μλ€μ μνκ° λͺ¨λ λ³κ²½λλ€. ν¨μκ° λ§μ κ²½μ°μ μ΄λ€ ν¨μμμ λ³κ²½μ νλμ§ μΆμ νκΈ°λ νλ€κ³ λμνκΈ°λ νλ€μ΄μ§λ€. μ΄ κ²½μ°λ μλ¬λ₯Ό λ°μ μν¬ κ°λ₯μ±μ΄ κ΅μ₯ν λλ€.
κ°μ²΄λ₯Ό μμ κ° μ²λΌ λ³κ²½ λΆκ°λ₯ν λΆλ³ κ°μ²΄λ‘ μμ±ν΄μ λ³μ κ°μ μ¬ν λΉ ν΄μ€ κ² μ²λΌ, κΉμ 볡μ¬λ₯Ό ν΅ν΄μ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νκ³ μ¬ν λΉμ ν΄μ£Όμ΄μ ν΄κ²°ν μ μλ€.
λ, μΈλΆ μνλ₯Ό λ³κ²½νμ§ μκ³ μμ‘΄νμ§λ μλ μμ ν¨μλ‘ νλ‘κ·Έλ¨μ μ§λ©΄ μ€λ₯κ° λ°μν κ°λ₯μ±μ λ΄μν μ μλ€. μ΄ λ°©λ²μ ν¨μν νλ‘κ·Έλλ°μ΄λΌ νλ€.
5. λ€μν ν¨μμ νν
1οΈβ£ μ¦μ μ€ν ν¨μ
(function (){
var a = 2;
var b = 2;
console.log(a + b);
}());
// μΌλ° ν¨μμ²λΌ κ°μ λ°ννκ³ , λ§€κ°λ³μλ₯Ό μ μν μ μλ€.
var res = (function (x, y){
return x + y
}(2, 4));
console.log(res)
π§ κ·Έλ£Ή μ°μ°μ () λ‘ ν¨μλ₯Ό λ¬Άλ μ΄μ λ 무μμΌκΉ?
ν¨μ κ°μ²΄λ₯Ό λ°λ‘ μμ±νκΈ° μν΄μ κ·Έλ£Ή μ°μ°μλ‘ λ¬Άμ΄μ€λ€.
κ·Έλ£Ή μ°μ°μ μμ μμΌλ©΄ νΌμ°μ°μλ‘ ν΄μλκ³ , νΌμ°μ°μλ κ°μ κ°μ§λ€.
λ°λΌμ ν¨μλ₯Ό κ·Έλ£Ή μ°μ°μλ‘ λ¬ΆμΌλ©΄ ν¨μ 리ν°λ΄λ‘ νκ°λμ΄ ν¨μ κ°μ²΄λ₯Ό λ°λ‘ μμ±νκ² λλ€.
ν¨μ κ°μ²΄λ₯Ό μμ±νλ©΄ κ·Έ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ μλ³μκ° μκΈ΄ κ²μ΄λ€. κ·Έ μλ³μλ₯Ό λ°λ‘ νΈμΆν΄μ ν¨μλ₯Ό μ€ν ν μ μλ κ²μ΄λ€!
λλ¨Έμ§ ν¨μ ννλ€μ ν΄λ‘μ κ°λ μ΄ νμνλ€. ν΄λ‘μ νμ΅ ν μ 리ν΄μΌκ² λ€!