2025. 8. 15. 14:47γFront-end/JavaScript

λͺ©μ°¨
1. ν¨μ
1-1. ν¨μλ?
1-2. μλ°μ€ν¬λ¦½νΈμ ν¨μ
2. ν¨μ κ΅¬μ± μμ
2-1. κ΅¬μ± μμ
2-2. λ§€κ°λ³μ (parameter)
2-3. κΈ°λ³Έκ° (default value)
2-4. λ°νκ° (return value)
3. ν¨μ μμ± λ°©λ² 3κ°μ§
3-1. ν¨μ μ μΈλ¬Έ
3-2. ν¨μ ννμ
3-3. μ΅λͺ ν¨μ& νμ΄ν ν¨μ
1. ν¨μ
1. ν¨μλ?
ν¨μλ κ°μ²΄μ νΉλ³ν ννλ‘, λ¬Έ(statement)λ‘ κ΅¬μ±λ λͺΈμ²΄λ₯Ό κ°μ§ νλμ μ€ν λ¨μμ΄λ€.
function doSomething() { // ν¨μ μ μΈ
console.log('hello');
}
doSomthing() // ν¨μ νΈμΆνμ¬ μ¬μ©
μ¬λ¬ κ³³μμ λΉμ·ν μ½λκ° μ°μΌ λ, μ½λμ μ€λ³΅μ μ€μ΄κΈ° μν΄ ν¨μλ₯Ό μ¬μ©νλ€.
μλ°μ€ν¬λ¦½νΈμ λ΄μ₯ ν¨μλ‘ alert(message), prompt(message, default), confirm(question) λ±μ΄ μλλ°,
νμν ν¨μλ₯Ό μ§μ λ§λ€μ΄μ μ¬μ©ν μ μλ€.
function ν€μλ, ν¨μλͺ , λ§€κ°λ³μλ₯Ό μμ±νμ¬ ν¨μλ₯Ό μ μΈνλ€.
function ν¨μλͺ
(parameter1, parameter2, ... parameterN) {
λμ μ½λ
}
//e.g.
let name = prompt('μ΄λ¦μ μ
λ ₯νμΈμ: ', '');
function sayHello(name) {
console.log(`Hello ${name}`);
}
sayHello();
2. μλ°μ€ν¬λ¦½νΈμ ν¨μ
μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ ν¨μ (first-class function)μΌλ‘, λ€λ₯Έ ν¨μμ λ§€κ°λ³μ, λ°νκ°μ΄ λ μ μλ€.
e.g.) DOMμ μ΄λ²€νΈλ₯Ό μΆκ°νλ μ½λ°±ν¨μ addEventListener()
button.addEventListener('click', callback); // addEventListenerν¨μμ callback()μ μΈμλ‘ λκΉ
2. ν¨μ κ΅¬μ± μμ
1. κ΅¬μ± μμ
μλ°μ€ν¬λ¦½νΈμ ν¨μλ function ν€μλλ‘ μ μλλ©°, μλμ κ΅¬μ± μμλ₯Ό κ°μ§λ€.
- ν¨μλͺ (μλ³μ) : ν¨μλ₯Ό ν λΉν λ³μμ μ΄λ¦
- λ§€κ°λ³μ(μΈμ) : κ΄νΈ μμμ μΌνλ‘ κ΅¬λΆλλ©°, ν¨μ λ΄ μ§μλ³μμ²λΌ μ΄μ©λ¨
- λͺΈμ²΄ : μ€κ΄νΈ{} μμ μ μνλ©°, ν¨μκ° νΈμΆλ λλ§λ€ μ€νλλ ꡬ문 μ§ν©
function μλ³μ(μΈμ) {
λͺΈμ²΄
}
2. λ§€κ°λ³μ (parameter)
μΈμ (argument) μ λ¬
- λ§€κ°λ³μ name : ν¨μ λ΄μμ μ§μλ³μμ²λΌ μ¬μ©λ¨
function sayHi(name) {
return `Hi ${name}`;
}
console.log(sayHi()); // Hi undefined
console.log(sayHi(bang)); // Hi bang
β argument κ°μ²΄
νμ΄ν ν¨μλ₯Ό μ μΈν λͺ¨λ ν¨μμμλ argument κ°μ²΄λ₯Ό μ¬μ©νμ¬ ν¨μμ μ λ¬λ μΈμλ€μ μ°Έμ‘°ν μ μλ€.
function sum(x, y, z) {
console.log(arguments[0]); // 1
console.log(arguments[1]); // 2
console.log(arguments[2]); // undefined
console.log(arguments.length); //2
return x + y + z;
}
sum(1, 2); // NaN
3. κΈ°λ³Έκ° (default value)
- λ§€κ° λ³μμλ μΈμλ‘ μ무κ²λ μλ€μ΄μμ λ μ§μ ν κΈ°λ³Έκ°μ μ§μ ν μ μλ€.
- μΈμλ, κΈ°λ³Έκ°λ μμΌλ©΄ ν΄λΉ λ§€κ°λ³μλ undefineκ° ν λΉλλ€.
function showMessage(from, text = "no text") {
alert(from + ' : ' + text);
}
4. λ°νκ° (return value)
ν¨μλ₯Ό νΈμΆνμ λ return μ§μμλ₯Ό μ¬μ©νλ©΄ νΉμ κ°μ λ°ννκ² ν μ μλ€.
// 1. μΈμ μ λ¬
function showMessage(from, text) {
alert(from + ' : ' + text);
}
showMessage('Bang', 'Hello!');
showMessage('Kim', 'Good Morning!');
// 2. κΈ°λ³Έκ° μ§μ
function showMessage(from, text = 'no comment') { ... }
// 3. λ°νκ° μ§μ
function showMessage(from, text) {
return from + ': ' + text
- returnμ ν¨μ λ΄ μ΄λμλ μ¬μ©ν μ μλ€.
- returnμ λ§λλ©΄ ν¨μ μ€νμ΄ μ€λ¨λκ³ , ν¨μλ₯Ό νΈμΆν κ³³μ κ°μ λ°ννλ€.
- κ° μμ΄ return; λ§ μμ±νλ©΄ ν¨μλ₯Ό μ’ λ£μν¨λ€. (returnλ¬Έμ΄λ λ°νκ°μ΄ μμΌλ©΄ returnμ undefinedλ₯Ό λ°ννλ€.)
- μλ°μ€ν¬λ¦½νΈλ return λ¬Έ λμ μλμΌλ‘ μΈλ―Έμ½λ‘ (;)μ λ£λλ€. λ°λΌμ μ€λ°κΏμ νλ©΄ μλλ€.
3. ν¨μ μμ± λ°©λ² 3κ°μ§
ν¨μλ₯Ό μμ±νλ λ°©λ²μ ν¨μ μ μΈλ¬Έ, ν¨μ ννμ, Function μμ±μ ν¨μ μ΄λ κ² 3κ°μ§κ° μλ€.
μ΄ μ€ Function μμ±μ ν¨μλ 보μ λ° μ±λ₯ λ¬Έμ κ° μμ΄ κΆμ₯λμ§ μλλ€.
1. ν¨μ μ μΈλ¬Έ
- λ μμ μΈ κ΅¬λ¬Έ ννλ‘ μ‘΄μ¬νλ€.
- νΈμ΄μ€ν
(hoisting)μ΄ λλ€.
- νΈμ΄μ€ν : ν¨μκ° μ μΈλ μμΉμμ μ½λμ μ΅μλ¨μΌλ‘ λμ΄μ¬λ €μ§λ κ²
- μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ€ν¬λ¦½νΈ μ€ν μ , μ€λΉ λ¨κ³μμ ν¨μλ₯Ό μμ±νλ€. → ν¨μ μ μΈλ¬Έμ΄ μ μλκΈ° μ μλ νΈμΆν μ μλ€.
- ν¨μκ° μ μΈλ μ½λ λΈλ‘ μμμλ§ μ ν¨νλ€. → ifλ¬Έ μμμ ν¨μλ₯Ό μ μΈνλ€λ©΄ ν΄λΉ ifλ¬Έ μμμλ§ μ¬μ© κ°λ₯
function sum(a, b) {
return a + b;
}
2. ν¨μ ννμ
- ν¨μ μ΄λ¦μ΄ μ νμ¬νμ΄λ©°, λ³μμ ν¨μλ₯Ό μ§μ ν λΉνλ€. (ννμ/ꡬ문 κ΅¬μ± λ΄λΆμ μμ±λλ€)
- μλ°μ€ν¬λ¦½νΈ μμ§μ΄ μ€μ νλ¦μ΄ ν΄λΉ ν¨μμ λλ¬νμ λ ν¨μλ₯Ό μμ±νλ€. → ν¨μ νν μμΉλ³΄λ€ μλ¨μμ νΈμΆλ μ μλ€.
- ν¨μ ννμμ μ¬μ©νλ©΄, ν¨μλ₯Ό μ΄λμμ μ μΈν΄λ ν λΉν λ³μμ μ κ·Όν μ μλ κ³³μμ μ ν¨νλ€.
let sum = function(a, b) {
return a + b;
}
보ν΅μ ν¨μ ννμμμ ν¨μμ μ΄λ¦μ μλ΅νλ, ν¨μ μ΄λ¦μ νννλ κΈ°λͺ ν¨μ ννμλ μλ€.
κΈ°λͺ ν¨μ ννμμμ μ μν ν¨μμ μ΄λ¦μ ν¨μμ λͺΈμ²΄ μμμλ§ μ¬μ© κ°λ₯νλ€.
const factorial = function doSometing(n) {
return (n <= 1) ? 1 : n * doSomething(n-1);
}
console.log(factorial(5)); // 120
μ£Όλ‘ ν¨μ ννμμ μ¬κ· νΈμΆν λ μ¬μ©νλ€.
3. μ΅λͺ ν¨μ & νμ΄ν ν¨μ
β μ΅λͺ ν¨μ
μ΄λ¦ μμ΄ μ μΈν ν¨μλ₯Ό μ΅λͺ ν¨μλΌκ³ λΆλ₯Έλ€.
μ΅λͺ ν¨μλ λ³μμ ν λΉλ κ²μ΄ μλκΈ° λλ¬Έμ μ μΈν λΈλ‘ λ°μμ μ κ·Όμ΄ λΆκ°λ₯νλ€.
function ask(question, yes, no) {
if(confirm(question)) yes()
else no();
}
ask(
"λμνμλκΉ?",
function() { alert("λμνμ΅λλ€."); } // μ΅λͺ
ν¨μ
function() { alert("μ·¨μνμ΅λλ€."); } // μ΅λͺ
ν¨μ
);
β νμ΄ν ν¨μ
ES2015μμ λ±μ₯ν λ¬Έλ²μΌλ‘, ν¨μ ννμλ³΄λ€ λ¨μνκ³ κ°κ²°ν λ¬Έλ²μΌλ‘ ν¨μλ₯Ό λ§λλ λ°©λ²μ΄λ€.
νΉμ§
- function ν€μλ μλ΅
- λ§€κ° λ³μκ° ν κ°μΌ λ κ΄νΈ μλ΅
- λ§€κ° λ³μκ° μμΌλ©΄ κ΄νΈλ§ μμ±
- ν¨μ λͺΈμ²΄μ λ¬Έμ΄ ν κ°μΈ κ²½μ°, μ€κ΄νΈ/return ν€μλ μλ΅ κ°λ₯
- argument κ°μ²΄μ this λ°μΈλ©μ νμ§ μμ
// 1. μΈμκ° 2κ°
let sum = (a, b) => a + b;
alert(sum(1, 2)); // 3
// 2. μΈμκ° 1κ° : κ΄νΈ μλ΅
let double = n => n * 2;
alert(double(3)); // 6
// 3. μΈμκ° μμ : κ΄νΈλ§
let sayHi = () => alert("Hi");
sayHi();
// 4. λ³Έλ¬Έμ΄ μ¬λ¬ μ€ : μ€κ΄νΈ{}μ λͺΈμ²΄λ₯Ό λ£μ
let sum = (a, b) => {
let result = a + b;
return result;
};
alert(sum(1,2)); // 3
μμμ μμ±ν΄λ΄€λ μ΅λͺ ν¨μλ νμ΄ν ν¨μλ‘ λ§λ€ μ μλ€.
ask {
"λμνμλκΉ?",
() => alert("λμνμ΅λλ€.");
() => alert("μ·¨μνμ΅λλ€.");
);
μ°Έκ³
https://ko.javascript.info/function-basics
ν¨μ
ko.javascript.info
κΈ°μ΄λΆν° μμ±κΉμ§, νλ°νΈμλ (μ΄μ¬μ±|νμ )
κΈ°μ΄λΆν° μμ±κΉμ§, νλ°νΈμλ - μμ€24
λλμ΄, μ΅μ΄μ κ°λ‘ μκ° λμμ΅λλ€! νλ°νΈμλμ κ°λ κ³Ό μ리λ₯Ό λͺ¨λ λ΄μ “νλ°νΈμλμ μ μ”첫째, κ°λ κ³Ό μ€μ΅, μ μ©κ³Ό ν¨μ¨μ λͺ¨λ μ‘μ λμ! νννκ² κ°λ μ μ‘κ³ , κ°λ μ λ°λ‘ μ
www.yes24.com
'Front-end > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| B11 : ν¨μ λ΄μ₯ λ©μλ (1) | 2025.08.17 |
|---|---|
| B10 : ν¨μμ this ν€μλ (8) | 2025.08.16 |
| B8 : λ°λ³΅λ¬Έ (2) | 2025.08.14 |
| [WIP] defer π async π DOMContentLoaded (1) | 2025.08.14 |
| Undefined vs null vs NaN (3) | 2025.08.12 |
GitHub