자바스크립트 함수 종류

(2022-05-14)

자바스크립트 함수 생성 방법 종류, 함수 표현식, Function Literal, 함수 리터럴


1. 자바스크립트 함수의 생성(정의) 방법의 종류함수 선언문에 의한 함수 생성 방법  ☞ 2.번 항 참조
  ㅇ 함수 표현식에 의한 함수 생성 방법  ☞ 3.번 항 참조
     - 익명 함수[JS]에 의한 함수 생성 방법
     - 함수 리터럴에 의한 함수 생성 방법
     - Function 객체(함수 객체 생성자)에 의한 생성 방법
  ㅇ 화살표 함수에 의한 함수 생성 방법


2. `함수 선언문` 형식에 의한, 자바스크립트 함수 생성 방법

  ㅇ `함수 선언문` 또는 `명시적 함수` 또는 `정적 함수` 또는 `이름있는 함수` 이란?
     - `function 키워드` 및 `함수 명`을 명시적으로 사용하여 선언하는 함수
       
function 함수명() {
   // 자바스크립트 코드문
}
- 특징 . 자바스크립트를 처음 읽을 때만 해석됨 . 이렇게 생성된 함수는 호출문이 이보다 앞에 있어도 호출 가능 ☞ 함수 호이스팅 참조 3. `함수 표현식` 형식에 의한, 자바스크립트 함수 생성 방법 ※ `함수식` 또는 `함수 표현식` 이란? - 자바스크립트함수도 하나의 값 처럼 취급됨 . 즉, 아래 (익명 함수[JS],함수 리터럴 등)들 처럼, .. 함수변수에 할당하는 것이 가능 (대입문 형태로) . 이 경우, 함수 이름은 필수가 아닌 선택이며, 통상 사용하지 않음 - 특징 . 이렇게 생성된 함수는 호출문이 이보다 앞에 있으면 호출 불가능 .. 통상, 함수식의 변수 할당에는 함수식의 참조가 할당되어야 하므로 ㅇ `익명 함수[JS]` 또는 `람다 표현식` 또는 `람다 함수`에 의한 함수 생성 방법 - 이름없는 함수 . 함수 이름을 정의하지 않고도, . 함수를 정의할 수 있는, 이름 없는 함수 - `익명 함수[JS]`의 例)
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은 함수 리터럴에 의해 정의되어 할당된 변수(함수 표현식)
- 특징 . 함수 리터럴익명 함수[JS]의 일종임 ㅇ `함수 객체 생성자`에 의한 함수 생성 방법 - 함수 객체 생성자 new Function() 참조를 사용하여, 익명 함수[JS]로써 선언 방법 例
例 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를 처리하게 됨

JS 함수
   1. JS 함수   2. JS 함수 종류   3. Function 객체   4. JS 함수 인수   5. this 키워드   6. 화살표 함수 (arrow)   7. 중첩 함수 (nested)   8. 즉시실행함수 (IIFE)   9. 콜백 함수 (CallBack)   10. 클로저 (Closure)   11. 고차 함수  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"