Function μ°μ΅ν΄μ¦ 3
1. ν¨μμμ typeof μ¬μ©
λ§€κ°λ³μμ νμ
μ λ°ννλ getType ν¨μλ₯Ό μμ±νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
typeof μ°μ°μ μ¬μ©
μ λ΅λ³΄κΈ°
μ½λμ€ν
function getType(x) {
return typeof x;
}
console.log(getType(123));
2. ν¨μμμ isNaN μ¬μ©
κ°μ΄ NaNμ΄λ©΄ trueλ₯Ό λ°ννλ isValueNaN ν¨μλ₯Ό μμ±νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
isNaN ν¨μ μ¬μ©
μ λ΅λ³΄κΈ°
μ½λμ€ν
function isValueNaN(x) {
return isNaN(x);
}
console.log(isValueNaN(NaN));
3. ν¨μμμ arguments κ°μ²΄ μ¬μ©
λͺ¨λ μΈμμ κ³±μ λ°ννλ multiplyAll ν¨μλ₯Ό μμ±νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
arguments κ°μ²΄ λλ ...args μ¬μ©
μ λ΅λ³΄κΈ°
μ½λμ€ν
function multiplyAll() {
let result = 1;
for(let i=0; i < arguments.length; i++) {
result *= arguments[i];
}
return result;
}
console.log(multiplyAll(2,3,4));
4. ν¨μμμ μ¬κ· μ¬μ©
n! (ν©ν 리μΌ)μ λ°ννλ factorial ν¨μλ₯Ό μμ±νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
if(n === 0) return 1; μ¬κ· νΈμΆ μ¬μ©
μ λ΅λ³΄κΈ°
μ½λμ€ν
function factorial(n) {
if(n === 0) return 1;
return n * factorial(n-1);
}
console.log(factorial(5));
5. ν¨μμμ μ€μ²© ν¨μ μ¬μ©
ν¨μ μμ ν¨μκ° μλ outer ν¨μλ₯Ό μμ±νκ³ , inner ν¨μμμ 'Hello'λ₯Ό μΆλ ₯νκ² νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
ν¨μ μμ function inner() { ... } μμ±
μ λ΅λ³΄κΈ°
μ½λμ€ν
function outer() {
function inner() {
console.log('Hello');
}
inner();
}
outer();
6. ν¨μμμ ν΄λ‘μ μ¬μ©
addMaker ν¨μλ₯Ό μμ±νμ¬ add5 = addMaker(5); add5(3) μ€ν μ 8μ΄ λμ€κ² νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
return function(y) { return x + y; }
μ λ΅λ³΄κΈ°
μ½λμ€ν
function addMaker(x) {
return function(y) {
return x + y;
}
}
const add5 = addMaker(5);
console.log(add5(3));
7. ν¨μμμ μ¦μ μ€ν ν¨μ(IIFE) μ¬μ©
μ¦μ μ€ν ν¨μλ‘ 'Hello'λ₯Ό μΆλ ₯νλ μ½λλ₯Ό μμ±νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
(function() { ... })(); νν μ¬μ©
μ λ΅λ³΄κΈ°
μ½λμ€ν
(function() {
console.log('Hello');
})();
8. ν¨μμμ this μ¬μ©
κ°μ²΄ objμ getName λ©μλλ₯Ό μΆκ°νμ¬ this.nameμ λ°ννκ² νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
obj.getName = function() { return this.name; }
μ λ΅λ³΄κΈ°
μ½λμ€ν
const obj = { name: 'Tom' };
obj.getName = function() {
return this.name;
}
console.log(obj.getName());
9. ν¨μμμ new μ°μ°μ μ¬μ©
μμ±μ ν¨μ Personμ λ§λ€μ΄ nameμ νλ‘νΌν°λ‘ μ μ₯νκ² νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
function Person(name) { this.name = name; }
μ λ΅λ³΄κΈ°
μ½λμ€ν
function Person(name) {
this.name = name;
}
const p = new Person('Jane');
console.log(p.name);
10. ν¨μμμ call/apply μ¬μ©
ν¨μ showNameμ objμ thisλ‘ μ€ννμ¬ 'Tom'μ μΆλ ₯νκ² νμμ€.
// μ¬κΈ°μ μ½λλ₯Ό μμ±νμΈμ
ννΈλ³΄κΈ°
showName.call(obj) λλ showName.apply(obj)
μ λ΅λ³΄κΈ°
μ½λμ€ν
const obj = { name: 'Tom' };
function showName() {
console.log(this.name);
}
showName.call(obj);