"함수"
1. 함수란?
함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 또 다른 자바스크립트의 핵심 개념인 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메소드, this, 프로토타입, 모듈화 등이 모두 함수와 깊은 관련이 있다. 따라서 함수는 자바스크립트를 정확히 이해하고 사용하기 위해 피해 갈 수 없는 핵심 중의 핵심이라고 할 수 있다.
수학의 함수는 "입력(input)"을 받아서 "출력(output)"을 내보내는 일련의 과정을 정의한 것이다. 예를 들어 f(x, y) = x + y라는 함수를 정의하고 이 함수에 두개의 입력 2, 5를 전달하면 함수는 정의된 일련의 과정, 즉 x + y를 실행하여 7을 출려한다. 이처럼 함수는 마치 재료를 투입받아서 제품을 생한하는 기계와 같다.

미리 정의해 둔 함수를 실행하는 것을 수식으로 표현하면 f(2, 5) = 7이다. 이때 함수의 x, y는 함수 내부로 입력을 받아들이는 변수(아직 결정되지 않았지만 변할 수 있는 수)이고 2, 5는 함수에서 정의된 일련의 과정을 실행하기 위해 필요한 입력이며 7은 함수의 실행 결과인 출력이다.
이때 함수의 실행을 위해 필요한 입력인 2, 5는 입력을 받아 들이는 변수 x, y를 통해 함수 외부에서 내부로 전달된다. 그리고 함수의 실행 결과인 출력은 함수 외부로 출력된다.
프로그래밍 언어의 함수도 수학의 함수와 같은 개념이다. 함수 f(x, y) = x + y를 자바스크립트의 함수로 표현해 보자.
자바스크립트에서 함수는 값으로 취급이 된다.
함수는 객체이고 값으로 취급이 되어지기 때문에 그 값을 식별해 내서 구별할 수 있는 식별자의 역할을 하는 함수의 이름을 줄 수도 있고 안 줄 수도 있다.
// f(x, y) = x + y
function add(x, y) {
return x + y;
}
// f(2, 5) = 7
add(2, 5); // 7
프로그래밍 언어의 함수는 일련의 과정을 문(statement)들로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다.
프로그래밍 언어의 함수도 입력을 받아수 출력을 내보낸다. 이때 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다. 또한 함수는 값이며 여려 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다.

함수는 함수 정의(Function definition)를 통해 생성한다. 자바스크립트의 함수는 다양한 방법으로 정의할 수 있다. 아래는 함수 선언문을 통해 함수를 정의한 예제다.
// 함수 정의
function add(x, y) {
return x +y;
}
함수 정의만으로 함수가 실행되지 않는다. 수학의 함수처럼 미리 정의된 일련의 과정을 실행하기 위해 필요한 입력, 즉 인수(argument)를 매개변수를 통해 함수에게 전달하면서 함수의 실행을 명시적으로 지시해야 한다. 이를 함수 호출(Function call/invoke)이라 한다. 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고 실행결과, 즉 반환값을 반환한다.
// 함수 호출
var result = add(2, 5);
// 함수 add에 인수 2, 5를 전달하면서 호출하면 반환값 7을 반환한다.
console.log(result); // 7'개발 > javascript' 카테고리의 다른 글
| 함수03 - 함수 리터럴 (1) | 2023.10.03 |
|---|---|
| 함수02 - 함수의 사용 이유 (0) | 2023.10.03 |
| 원시 값과 객체의 비교05 - 참조에 의한 전달 (0) | 2023.10.01 |
| 원시 값과 객체의 비교04 - 변경 가능한 값 (1) | 2023.10.01 |
| 원시 값과 객체의 비교03 - 값에 의한 전달 (0) | 2023.10.01 |