1. 자바스크립트 함수의 생성(정의) 방법의 종류
ㅇ 함수 선언문에 의한 함수 생성 방법 ☞ 2.번 항 참조
ㅇ 함수 표현식에 의한 함수 생성 방법 ☞ 3.번 항 참조
- 익명 함수에 의한 함수 생성 방법
- 함수 리터럴에 의한 함수 생성 방법
- Function 객체(함수 객체 생성자)에 의한 생성 방법
ㅇ 화살표 함수에 의한 함수 생성 방법
2. `함수 선언문` 형식에 의한, 자바스크립트 함수 생성 방법
ㅇ `함수 선언문` 또는 `명시적 함수` 또는 `정적 함수` 또는 `이름있는 함수` 이란?
- `function 키워드` 및 `함수 명`을 명시적으로 사용하여 선언하는 함수
function 함수명() {
// 자바스크립트 코드문
}
- 특징
. 자바스크립트를 처음 읽을 때만 해석됨
. 이렇게 생성된 함수는 호출문이 이보다 앞에 있어도 호출 가능 ☞ 함수 호이스팅 참조
3. `함수 표현식` 형식에 의한, 자바스크립트 함수 생성 방법
※ `함수식` 또는 `함수 표현식` 이란?
- 자바스크립트는 함수도 하나의 값 처럼 취급됨
. 즉, 아래 (익명 함수,함수 리터럴 등)들 처럼,
.. 함수를 변수에 할당하는 것이 가능 (대입문 형태로)
. 이 경우, 함수 이름은 필수가 아닌 선택이며, 통상 사용하지 않음
- 특징
. 이렇게 생성된 함수는 호출문이 이보다 앞에 있으면 호출 불가능
.. 통상, 함수식의 변수 할당에는 함수식의 참조가 할당되어야 하므로
ㅇ `익명 함수` 또는 `람다 표현식` 또는 `람다 함수`에 의한 함수 생성 방법
- 이름없는 함수
. 함수 이름을 정의하지 않고도,
. 함수를 정의할 수 있는, 이름 없는 함수
- `익명 함수`의 例)
var doSomething = function (x,y) {
// 함수 본문
};
doSomething(a,b);
- 특징
. 함수 정의를, 변수에 할당시키는 대입문을 통해서 함
. 그렇게 변수(함수를 대입한)를 통해서, 함수를 바로 호출할 수 있음
. 이름이 없기 때문에, 접근(실행)할 때에 비로소 해석됨 (함수 객체로 평가됨)
.. 즉, 실행될 때 함수 몸체가 해석되며, 실행 전에는 함수 몸체를 알 수 없음
ㅇ `함수 리터럴`에 의한 함수 생성 방법
- 함수를,
. 리터럴(직접 입력한 문자열 처럼 보임)로써 만들고,
. 이렇게 정의된 함수를 변수에 할당함으로써,
. 함수를 생성하는 것
- `함수 리터럴`을 사용하여 함수 생성 例
function otherFunction(x, y, z) {
// 함수 본문
}
var param = function(x,y) { // 함수 본문 };
// 여기서, 함수 리터럴은 `function(x,y) { ... }` 부분을 말함
otherFunction(param, a, b);
// 여기서, param은 함수 리터럴에 의해 정의되어 할당된 변수(함수 표현식)
- 특징
. 함수 리터럴은 익명 함수의 일종임
ㅇ `함수 객체 생성자`에 의한 함수 생성 방법
- 함수 객체 생성자 new Function()
참조를 사용하여, 익명 함수로써 선언 방법 例
例 1)
var square = new Function("x", "return x * x");
squar(3); // 숫자 9 출력
例 2)
var functionName = new Function (x,y, functionBody);
functionName(a,b); // 호출시에 Function 함수 객체에서 두 인수 a,b를 처리하게 됨