수학의 함수는 입력 ( input ) 과 출력 ( output )하는것을 말한다.
프로그래밍 언어의 함수는 일련의 과정을 '문'으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의 한 것이다.
function 식별자 ( 매개변수 ) {
함수 body
return 반환값;
}
const a = 식별자 ( 10, 20, "hello" );
---------------------------------------
// 예시
function add ( x, y ) {
return x + y;
}
add ( 2, 5 );
매개변수 ( parameter ) 란, 함수내부로 입력을 전달받는 변수이다.
입력을 인수(argument), 출력을 반환값(return value)라고 한다.
화살표 함수 ( arrow function ) 는 function 키워드 대신 화살표 => 를 사용하여 좀 더 간략한 방법으로 함수를 선언할 수 있다.
// 화살표 함수 한줄짜리
const add = ( x, y ) => x + y;
console.log(add(2,5)); // 7
// 변수 선언과 함께 함수표시
const bar = (매개변수1, 매개변수2) => {
함수 body
};
화살표함수는 기존의 함수보다 표현만 간략한것이 아니라 내부동작 또한 간략화 되어있기때문에 기존 함수를 완전히 대체하지는 않는다.
익명 함수는 함수명 대신 변수명에 함수 코드를 저장하는 구현 방식이다. 익명 함수의 소스 코드는 변수값이므로 끝에 세미콜론 ; 을 대입한다. 익명 함수는 호출 시 변수명을 함수명처럼 사용하면 된다.
var 변수명 = function( 매개변수 )
{
실행문;
};
// 익명 함수 선언 및 변수에 대입
var hello = function( ) {
document.write("Hello World!");
};
//익명 함수 변수명으로 호출
hello(); // Hello World!
이름이 필요없고 즉시 실행해야 할 때 사용한다.
함수 정의와 동시에 즉시 호출되는 함수를 즉시 실행 함수 라고 하며,
단 한번만 호출되어 다시 호출될 수 없다.
(function(){
console.log('즉시실행');
});
콜백함수(Callback Function)란 매개변수로 함수를 전달받아, 함수의 내부에서 실행하는 함수이다.
// 인자값이 함수일 때
const add = (numbers) => {
let result = 0;
for (let i = 0; i < numbers.length; i++) {
result += numbers[i];
}
return result;
};
const calculate = (cb, numbers, operateType) => {
if (operateType === "add") {
const result = cb(numbers);
return result;
}
if (operateType === "multiple") {
return "multiple";
}
return "Wrong operate result.";
};
const getOperator = () => {
return "add";
};
const calculatingResult = calculate(add, [1, 2, 3], getOperator());
함수가 자기 자신을 호출하는 것을 재귀함수 ( recursive call ) 라고 한다.
★ 재귀호출시 계속 무한 돌기때문에 탈출조건이 필요하다.
function factorial ( n ) {
if ( n <= 1 ) return 1; // 탈출조건
return n * factorial ( n-1 ); // 재귀함수
}
console.log(factorial(0)); // 0! = 1