입력을 받아 출력을 하는 일련의 과정을 정의한 것
기능 단위로 코드를 구성해 특정 처리를 모듈화
코드의 중복을 최소화하고 필요에 따라 호출하여 사용
함수 정의 방법은 함수 선언식, 함수 표현식, 화살표 함수 등이 존재
// ---------------------------
// 함수 선언식 : 호이스팅에 영향을 받는다.
// 재할당이 가능하므로 함수명이 중복되지 않도록 조심해야 함
// ---------------------------
function fnc1(a, b) {
return a + b;
}
// ---------------------------
// 함수 표현식 : 호이스팅에 영향을 받지 않는다.
// 함수 표현식에서는 함수 이름을 생략한 익명함수로 사용 가능
// const로 생성시 재할당되는 것을 방지 가능
// ---------------------------
const fnc2 = function(a, b) {
return a + b;
}
// ---------------------------
// 화살표 함수
// ---------------------------
let fnc3 = (a, b) => a + b;
인수(Argument) 함수를 호출할 때 전달 되는 값
매개변수(Parameter) 함수의 정의에서 전달 받은 인수(Argument)를 저장하는 변수
return문 함수의 연산 결과를 반환하기 위한 문법
// parameter : 함수 정의에서 전달 받은 argument를 저장하는 변수인(소괄호 안) a와 b
function fnc1(a, b) {
return a + b; // return : 함수의 연산 결과를 반환
}
// argument : 함수 호출에서 전달되는 값인(소괄호 안) 1과 2
fnc1(1, 2);
let sum = (function(a, b){
return a + b;
})(1, 3);
console.log(sum); // 4 출력
// 모듈 패턴 예시
const myClass = (function() {
const name = "홍길동";
return {
myClassPrintName: function() {
console.log(name + "입니다.");
}
}
})();
myClass.myClassPrintName(); // 홍길동입니다. 출력
다른 함수의 파라미터로 전달되어 특정 조건에 따라 호출되는 함수
주로 이벤트 핸들링이나 비동기 처리에서 주로 사용
function myChkSum(callback, num) {
if(num === 1) {
callback(); // 해당 콜백 함수 호출
}
console.log("fnc myChkSum");
}
function myPrint() {
console.log("fnc myPrint");
}
myChkSum(myPrint, 1); // fnc myPrint 와 fnc myChkSum 이 순차로 출력
myChkSum(myPrint, 2); // fnc myChkSum 만 출력