π€ μμ§log π€
ν¨μ λ³Έλ¬Έ
ν¨μλ μλ°μ€ν¬λ¦½νΈμμ κ°μ₯ μ€μν ν΅μ¬ κ°λ μ΄λ©°, λ λ€λ₯Έ μ€μν ν΅μ¬ κ°λ λ€( μ€μ½ν, μ€ν 컨ν μ€νΈ, ν΄λ‘μ , μμ±μ ν¨μμ μν κ°μ²΄ μμ±, λ©μλ, this, νλ‘ν νμ , λͺ¨λν λ±)κ³Ό κΉμ κ΄λ ¨μ΄ μλ€.
- ν¨μλ λ€λ₯Έ λ³μμ λ§μ°¬κ°μ§λ‘ λ³μμ ν λΉμ΄ λκ³ ν¨μμ λ§€κ° λ³μλ‘ μ λ¬μ΄ λλ©° 리ν΄κ°μΌλ‘λ 리ν΄μ΄ λλ€. (Function Expression)
- ν¨μλ νλ‘κ·Έλ¨μ ꡬμ±νλ κΈ°λ³Έμ μ΄ building block μ΄λ©° sub-program μ΄λΌκ³ λ λΆλ¦¬λ©° μ¬λ¬λ² μ¬μ¬μ© κ°λ₯νλ€λ μ₯μ μ΄ μλ€.
- νκ°μ§ task λ μ΄λ ν κ°μ κ³μ°νκΈ° μν΄ μ¬μ©νλ€.
- βοΈ ν¨μλ input κ³Ό outputμ΄ μ€μνκ³ ν¨μμ μ΄λ¦μ μ νλκ²μ΄ μ€μ!
function name(param1, param2) { body ... return; }
νλμ ν¨μλ νκ°μ§μ μΌλ§ νλλ‘ λ§λ€μ΄μΌ νλ€
- ν¨μμ μ΄λ¦μ μ§μ ν λ 무μΈκ°λ₯Ό λμνλκ²μ΄κΈ° λλ¬Έμ doSomething, command, verb λ‘ μ§μ ν΄μΌ νλ€.
- ν¨μμ μ΄λ¦μ μ νκΈ° μ΄λ ΅λ€λ©΄ λ무 λ§μκ²μ λ΄κ³ μλκ²μ΄ μλμ§, μΈλΆν ν μ μμ§ μμμ§ κ³ λ―Όν΄λ³΄λ©΄ λ κΉ¨λν ν¨μλ₯Ό λ§λ€μ μλ€.
맀κ°λ³μ
μμ νμ
μ κ° value μ 볡μ¬νκ³ , ( κΉμ λ³΅μ¬ )
μ°Έμ‘° νμ
μ μ£Όμ refernce λ₯Ό 볡μ¬νλ€. ( μμ λ³΅μ¬ )
κΈ°λ³Έ 맀κ°λ³μ (Default Paremeters)
function showMessage(message, from) {
console.log(`${message} by ${from}`);
}
showMessage('Hi!'); // Hi! by undefined
// from μ΄ μ μ λμ΄μμ§ μκΈ° λλ¬Έμ undefinedλ‘ μΆλ ₯
function showMessage(message, from = 'unknown') {
console.log(`${message} by ${from}`);
}
showMessage('Hi!'); // Hi! by unknown
// 맀κ°λ³μ μμ μνλ default κ°μ μ§μ ν΄ λμΌλ©΄ μ¬μ©μκ° λ§€κ°λ³μλ₯Ό μ§μ νμ§ μμλ
// κ°μ΄ λ체 λμ΄μ μΆλ ₯λλ€
λλ¨Έμ§ λ§€κ°λ³μ (Rest Parameters)
" ... " μ μ¬μ©νκ³ λ°°μ΄ ννλ‘ μ λ¬λλ€.
function printAll(...args) {
for (let i = 0; i < args.length; i++) {
console.log(args[i]); // λ°©λ² β
}
// for (const arg of args) {
// console.log(arg); λ°©λ² β‘
// }
// args.foreach((arg) => console.log(arg)); λ°©λ² β’
}
printAll('Eunji', 'Amy', 'Coding'); // Eunji, Amy, Coding
ν¨μ λ°ν κ° (Return a value)
ν¨μκ° μλ£λμμ λ ν¨μκ° λ°ννλ κ°.
- λ°νλ¬Έμ ν¨μ λͺΈμ²΄ λ΄λΆμμλ§ μ¬μ©ν μ μλ€.
- return ν€μλμ λ°νκ° μ¬μ΄μ μ€λ°κΏμ΄ μμΌλ©΄ 무μλλ€. ( μΈλ―Έμ½λ‘ ; μ½μ κΈμ§ )
Early return, early exit
function upgradeUser(user) {
if (user.point > 10) {
// logic...
}
} // Badπ± - λΈλ‘ μμμ λ‘μ§μ λ§μ΄ μμ± ( if/ else) νλ©΄ κ°λ
μ±μ΄ λ¨μ΄μ§λ€.
function upgradeUser(user) {
if (user.point > 10) {
return; // μ‘°κ±΄μ΄ λ§μ§ μλλ€λ©΄ returnμΌλ‘ 빨리 ν¨μλ₯Ό μ’
λ£νκ³
} // μ‘°κ±΄μ΄ λ§μλλ§ νμν logicμ μ€ννλκ² μ’λ€.
// logic...
} // Goodπ
ν¨μ μ μΈ & νν ( Function Declaration & Expression )
const print = function () { // μ΅λͺ
ν¨μ(anonymous function)
console.log('print');
};
print(); // ν¨μ νΈμΆ -> print μΆλ ₯
const printAgain = print; // printAgainμ μμ μ μΈλ ν¨μλ₯Ό κ°λ¦¬ν€κ³ μμΌλ―λ‘
printAgain(); // ν¨μ νΈμΆμ νλ©΄ -> print κ° μΆλ ₯λλ€.
μ μΈλ¬Έ κ³Ό ννμμ κ°μ₯ ν° μ°¨μ΄μ μ
- μ μΈλ¬Έμ νΈμ΄μ€ν μ΄ κ°λ₯ν¨. ( ν¨μκ° μ μΈλκΈ° μ΄μ μ νΈμΆ κ°λ₯ )
- μ μΈλ¬Έμ ν¨μ μ΄λ¦μ μλ΅ν μ μλ€.
- μ μΈλ¬Έμ ννμμ΄ μλ λ¬Έ( Statement ) μ΄λ€.
- ννμμ ν λΉλ λ€μλΆν° νΈμΆμ΄ κ°λ₯νλ€.
- ννμμ ννμμ΄ λ¬Έ( statement ) μ΄λ€.
μ½λ°± ν¨μ ( Callback Function )
function randomQuiz(answer, printYes, printNo) {
if (answer === 'love u') {
printYes();
} else {
printNo();
}
}
const printYes = function () { // μ΅λͺ
ν¨μ
console.log('Yes!');
};
// ννμμμ μ΄λ¦μ μ°λ μ΄μ λ λλ²κΉ
μ ν λ μ€ν μΆμ μ ν¨μ μ΄λ¦μ΄ λμ€κ² νλ €κ³ μ¬μ©
// λλ ν¨μ μμμ μμ μ€μ€λ‘ λλ€λ₯Έ ν¨μλ₯Ό νΈμΆν λ (μ¬κ· ν¨μ) μ΄λ€.
const printNo = function print() { // κΈ°λͺ
ν¨μ
console.log('No!');
}
randomQuiz('wrong', printYes, printNo); // No!
randomQuiz('love u', printYes, printNo); // Yes!
νμ΄ν ν¨μ ( Arrow Function )
νμ΄ν ν¨μλ μ΅λͺ ν¨μ μ΄λ€.
- λΈλ‘ν λ³΄λ€ ν¨μ¬ κ°κ²°νκ² μ¬μ© ν μ μλ€.
const simplePrint = function () {
console.log('simplePrint!');
};
π» π» π»
βοΈ const simplePrint = () => console.log('simplePrint!');
μ¦μ μ€ν ν¨μ ( Immediately Invoked Function Expression )
ν¨μλ₯Ό μ μΈν¨κ³Ό λμμ μ¦μ νΈμΆλλ ν¨μ μ΄λ€.
- μ¦μ μ€ν ν¨μλ λ°λμ κ΄νΈ ()λ‘ μ μΈμ κ°μΈμΌ νλ€.
(function hello() {
console.log('IIFE');
})(); // IIFE
μ¬κ· ν¨μ ( Recursive function )
μκΈ° μμ μ νΈμΆνλ νμ, μ¦ μ¬κ· νΈμΆμ νλ ν¨μ μ΄λ€.
- ν¨μ λͺΈμ²΄ λ΄λΆμμλ ν¨μ μ΄λ¦μ μ΄μ©ν΄ μκΈ° μμ μ νΈμΆν μ μμ§λ§, ν¨μ μΈλΆμμλ λ°λμ ν¨μλ₯Ό κ°λ¦¬ν€λ μλ³μλ‘ νΈμΆν΄μΌ νλ€.
'π λͺ¨λJavascript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ (1) | 2022.09.28 |
---|---|
μ€μ½ν (Scope) (0) | 2022.09.28 |
μμκ°κ³Ό κ°μ²΄ λΉκ΅ (0) | 2022.09.28 |
κ°μ²΄ 리ν°λ΄ (0) | 2022.09.28 |
λ¨μΆνκ° (0) | 2022.09.28 |