"함수"
3. 함수 리터럴
자바스크립트의 함수는 객체 타입의 값이다. 따라서 숫자값을 숫자 리터럴로 생성하고 객체를 객체 리터럴로 생성하는 것처럼 함수도 함수 리터럴로 생성할 수 있다. 함수 리터럴은 function 키워드, 함수 이름, 매개변수 목록 그리고 함수 몸체로 구성된다.
// 변수에 함수 리터럴을 할당
var add = function add(x, y) {
return x + y;
};
함수 리터럴의 구성 요소에 대한 설명은 아래와 같다.
- 함수 이름
- 함수 이름은 식별자이다. 따라서 식별자 네이밍 규칙을 준수해야 한다
- 함수 이름은 함수 몸체 내에서만 참조할 수 있는 식별자다.
- 함수 이름은 생략할 수 있다. 함수는 객체 타입의 값이다. 따라서 변수와 마찬가지로 재사용하기 위해 이름을 붙일 수 있다. 하지만 한번만 사용하는 함수라면 이름을 생략할 수도 있다. 함수 이름이 있는 함수를 기명함수(named function), 함수 이름이 없는 함수를 익명 함수(anonymous function)라 한다.
- 매개변수 목록
- 0개 이상의 매개변수를 소괄호로 감싸고 쉼표로 구분한다.
- 매개변수에는 함수호출문의 인수가 순서대로 할당된다. 즉, 매개변수 목록은 순서에 의미가 있다.
- 매개변수는 함수 몸체 내에서 변수와 동일하게 취급된다. 따라서 매개변수도 변수와 마찬가지로 식별자 네이밍 규칙을 준수해야 한다.
- 함수 몸체
- 함수가 호출되었을 떄 일괄적으로 실행될 문들을 하나의 실행 단위로 정의한 코드 블록이다.
- 함수 몸체는 함수 호출에 의해 실행된다.
위 예제를 보면 함수 리터럴을 변수에 할당하고 있다. 리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기 방식(notaion)을 말한다. 즉, 리터럴은 값을 생성하는 표기법이다. 따라서 함수 리터럴도 평가되어 값을 생성하며 이 값은 객체다. 즉, 함수는 객체다.
함수는 객체이지만 일반 객체와는 다르다. 일반 객체는 호출할 수 없지만 함수는 호출할 수 있다. 그리고 일반 객체에는 없는 함수 객체만의 고유한 프로퍼티를 갖는다.
함수가 객체라는 사실은 다른 프로그래밍 언어와 구별되는 자바스크립트의 중료한 특징이다. 이 특징을 제대로 이해하지 않으면 함수를 제대로 이해하기 어렵다.
'개발 > javascript' 카테고리의 다른 글
| 함수05 - 함수 선언문 (0) | 2023.10.03 |
|---|---|
| 함수04 - 함수 정의 (0) | 2023.10.03 |
| 함수02 - 함수의 사용 이유 (0) | 2023.10.03 |
| 함수01 - 함수란? (0) | 2023.10.03 |
| 원시 값과 객체의 비교05 - 참조에 의한 전달 (0) | 2023.10.01 |