자바스크립트에서 함수는 세 가지 방법으로 만들 수 있다.
1. 함수 선언문
function sum(a, b) {
let result = a + b;
return result;
}
2. 함수 표현식
let sum = function(a, b) {
let result = a + b;
return result;
};
sum(1,2); //3
함수는 객체이기 때문에 위와 같이 변수처럼 받을 수 있다. 그리고 C#의 델리게이트처럼 호출 할 수 있다.
3. 화살표 함수
// 화살표(=>) 우측엔 표현식이 있음
let sum = (a, b) => a + b;
// 중괄호{ ... }를 사용하면 본문에 여러 줄의 코드를 작성할 수 있음. return문이 꼭 있어야 함.
let sum = (a, b) => {
// ...
return a + b;
}
// 인수가 없는 경우
let sayHi = () => alert("Hello");
// 인수가 하나인 경우
let double = n => n * 2;
화살표 함수는 C#의 람다식을 사용한 익명 함수와 같다고 생각하면 되겠다.
나머지 매개변수 (...args)
함수를 만드는 방법 외에도 ...arguments라는 특별한 매개변수가 있다.
const multiplyAll = function(...args){
return args.reduce((a, b) => a * b, 1);
}
console.log(multiplyAll(3, 4, 5, 6, 7, 8, 9 ,10)); //1814400
위의 예제 코드를 보면 ...args 를 함수의 매개변수로 넣어줬다.
나머지 매개변수는 매개변수에 입력된 Arguments들을 배열로 만들어 담는다.
그렇기 때문에 배열의 함수 중 reduce를 사용할 수 있는 것이다.
중첩 함수
function sayHiBye(firstName, lastName) {
// 헬퍼(helper) 중첩 함수
function getFullName() {
return firstName + " " + lastName;
}
console.log("Hello, " + getFullName());
console.log("Bye, " + getFullName());
}
sayHiBye('친구1', '친구3');
/** 출력결과
*Hello, 친구1 친구3
*Bye, 친구1 친구3
*/
함수 내부에는 중첩 함수를 만들 수 있다. 내부적으로 함수를 만들고 내부 함수에 도움을 줄 수 있는 헬퍼함수를 만들 수 있는 것이다.
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
이벤트 루프 (Event Loop) (0) | 2025.01.08 |
---|---|
렉시컬 환경(Lexical Environment), 클로저 (0) | 2025.01.07 |
변수 선언과 변수 타입 (0) | 2025.01.06 |