ν λΉ λ μ μλ€μΈμλ‘ μ λ¬ λ μ μλ€λ°ν λ μ μλ€μ μΈλ¬Έ
// κΈ°λͺ
ν¨μ addλΌλ μ΄λ¦μ΄ μμ
function add(x, y){
const result = x + y;
return result;
}
// μ΅λͺ
ν¨μ, ν¨μ μ΄λ¦μ΄ μλ€
function () {}
μλ΅ κ°λ₯μλ΅ κ°λ₯ , κ΄νΈλ νμλ³Έλ¬Έμ μλ΅ κ°λ₯ , μ€κ΄νΈλ νμννμ
ν¨μ μ μλ₯Ό λ³μμ ν λΉ
λ³μμ μ΅λͺ ν¨μλ₯Ό μ§μ
const add = function (x,y){
const result = x + y;
return result;
};
add(10 , 20)
λ³μμ κΈ°λͺ ν¨μλ₯Ό μ§μ
const f = function factorial(n){
if( n == 1 ){
return 1
}
return n * factorial(n - 1);
};
console.log(f(5)); //
console.log(factorial(5)); // μ μ μλ μλ¨
Function μμ±μ ν¨μ
const add = new Function('x', 'y', 'let result = x + y; return result;');
// λ³μ = μλ‘μ΄ ν¨μ (λ§€κ°λ³μ1, λ§€κ°λ³μ 2, μ€νν μ½λ)νμ΄ν ν¨μ ννμ
// κΈ°μ‘΄ ν¨μ
let add = function (x, y) {
return x + y;
};
// νμ΄ν ν¨μ
add = (x, y) => {
return x + y;
};
// νμ΄ν ν¨μ μΆμ½ => μ€νν μ½λκ° λ¨ νκ°λ©΄ κ°λ₯
add = (x, y) => x + y;
// add μΆλ ₯λ¬Έ
console.log(add(10, 20)); // μΆλ ₯μ 10 + 20 = 30
// κΈ°μ‘΄ ν¨μ
let add10 = function (x) {
return x + 10;
};
// νμ΄ν ν¨μ
add10 = (x) => {
return x + 10;
};
// νμ΄ν ν¨μ μΆμ½ => μ€νν μ½λκ° λ¨ νκ°λ©΄ κ°λ₯
add10 = (x) => x + 10;
add10 = x => x + 10; // λ§€κ° λ³μκ° νλλ§ μλ€λ©΄ λ§€κ°λ³μμ κ΄νΈ μλ΅ κ°λ₯
// add10 μΆλ ₯λ¬Έ
console.log(add10(100)); // 100 + 10 = 110
ν¨μ νΈμ΄μ€ν
μ μΈλ¬Έ ννλ‘ μ μν ν¨μ μ μ ν¨ λ²μκ° μ½λμ 맨 μ²μλΆν° μμν κ² λλ μλ°μ€ν¬λ¦½νΈμ λμ λ°©μconsole.log("μ€ν μμ 2", add(10, 20));
function add(x, y) {
return x + y;
}
console.log("μ€ν μμ 3", add(10, 20));
λ³μ νΈμ΄μ€ν
var λ‘ μ μΈν λ³μ μ κ²½μ° μ μΈλ§ λκ³ κ·Έ κ°μ undefined λ‘ μ΄κΈ°ν λ¨let, const λ‘ μ μΈν λ³μ μ κ²½μ° νΈμ΄μ€ν
λ¨κ³μμ μ μΈμ λμ§λ§ μ΄κΈ°νκ° λμ§ μκΈ° λλ¬Έμ μ μΈ μ μ μ κ·Όνλ©΄ μλ¬ λ°μconsole.log(a);
console.log(b); // ReferenceError: Cannot access 'b' before initialization
console.log(c); // ReferenceError: Cannot access 'c' before initialization
var a = 10; // νΈμ΄μ€ν
λ¨κ³μμ undefindeλ‘ μ΄κΈ°νκ° λΌμμ => κ·Έλμ μλ¬ μλ¨
let b = 20; // νΈμ΄μ€ν
λ¨κ³μμ μ μΈλ§ λκ³ μ΄κΈ°νκ° μλ¨ => κ·Έλμ μλ¬λ¨
const c = 30; // νΈμ΄μ€ν
λ¨κ³μμ μ μΈλ§ λκ³ μ΄κΈ°νκ° μλ¨ => κ·Έλμ μλ¬λ¨
console.log(a); // μ μμ μΌλ‘ μΆλ ₯ λ¨
console.log(b); // μ μμ μΌλ‘ μΆλ ₯ λ¨
console.log(c); // μ μμ μΌλ‘ μΆλ ₯ λ¨
console.log(add(10, 20));
// TypeError: add is not a function
// var λ³μλ νΈμ΄μ€ν
λμ§λ§ μ΄κΈ°νλ μλλ―λ‘ μ΄ μμ μμ addλ undefinedμ
// ννμ λ°©μμ ν¨μ μ μ
var add = function (x, y) {
return x + y;
};
console.log(add(10, 20)); // μ μμ μΌλ‘ 30μΌλ‘ μΆλ ₯λ¨
TDZ(Temporal Dead Zone)
var add; // νΈμ΄μ€ν
μ μ μΈλκ³ undefinedλ‘ μ΄κΈ°νλ¨
// λ³Έ μ½λ μ€ν λ¨κ³ (μμ§ ν¨μ ν λΉ μ )
console.log(add);
// μΆλ ₯ κ²°κ³Ό: undefined
// μλ¬λ μλ. λ€λ§ μμ§ ν¨μκ° μλ => μ€ν λΆκ°λ₯
// ννμ λ°©μμ ν¨μ μ μ (ν¨μλ₯Ό λ³μμ ν λΉ)
var add = function (x, y) {
return x + y;
};
console.log(add(10, 20)); // 30 μΆλ ₯λ¨
function max(n1, n2) {
let result; // μ§μ λ³μ μ μΈ (λΈλ‘ μ€μ½ν)
if (n1 > n2) {
result = n1;
} else {
result = n2;
}
return result;
}
β μ£Όμ ν¬μΈνΈ μ€λͺ
| νλͺ© | μ€λͺ |
|---|---|
| ν¨μ μ΄λ¦ | max β λ μ μ€ μ΅λκ°μ λ°ν |
| λ§€κ°λ³μ | n1, n2 β λΉκ΅ν λ μ«μ |
| μ§μ λ³μ | result β ν¨μ λ΄λΆμμλ§ μ¬μ©λλ λ³μ |
| μ€μ½ν | letμΌλ‘ μ μΈλ resultλ ν¨μ λ΄λΆ(μ§μ)μμλ§ μ ν¨ν¨ |
| νΈμ΄μ€ν | letμ νΈμ΄μ€ν
μ λμ§λ§ TDZ(Temporal Dead Zone) λλ¬Έμ μ΄κΈ°ν μ μ κ·Ό λΆκ°λ₯μ£Όμμ varλ‘ λ°κΎΈλ©΄ νΈμ΄μ€ν
νμ΅ μμλ‘ μ μ ν¨ |
π§ μμλ‘ λ³΄λ μ§μ λ³μ vs μ μ λ³μ
resultλ ν¨μ λ΄λΆμμλ§ μ μΈλμκΈ° λλ¬Έμ μΈλΆμμ μ κ·Ό λΆκ°λ₯
μμ:
console.log(result); // ReferenceError: result is not defined
π‘ varμ letμ μ°¨μ΄ μμ
function max(n1, n2) {
// var result; // νΈμ΄μ€ν
μΌλ‘ ν¨μ μ΅μλ¨μ μ μΈλ κ²μ²λΌ μλ
let result; // letμ TDZ μν₯ β μ μΈ μ μ κ·Ό λΆκ°
if (n1 > n2) {
result = n1;
} else {
result = n2;
}
return result;
}
varλ‘ μ μΈνλ©΄, ν¨μ μμ μμ μ undefinedλ‘ μ΄κΈ°νλ¨
letμ μ μΈ μμ κΉμ§ TDZμ μμΌλ―λ‘, μ μΈ μ μ κ·Ό μ ReferenceError
...μ λΆμλ§€κ°λ³μ > μΈμ
function add(x, y, z) {
console.log(z); // undefined
return x + y;
}
console.log(add(3, 4)); // 7 => zκ°μ μμμ 무μ
λ§€κ°λ³μ < μΈμ
function add(x, y) {
return x + y;
}
console.log(add(3 , 4 , 5)); // 7 => 5λ μμμ 무μ
argumentsβ¦) μ¬μ©μ κΆμ₯thisch01
ch02