본문 바로가기

Dev.FrontEnd/JavaScript

3-2. 자바스크립트 함수 / 정의, 종류

Chapter 3-2. 자바스크립트의 함수 / 정의, 종류

함수 정의 3가지 방법
첫번째,
1
2
3
function add(x,y){
     return x+y;
}
cs
파싱하는 단계에서 함수 변수인 add가 정의되고,
함수를 호출하면 런타임에 x,y가 정의된다.

두번째,
1
2
3
var add = function(x,y) {
    return x+y;
}
cs
실행코드블록을 갖는 함수를 정의해 add라는 변수에 할당하고 있다.
이렇게 정의된 함수는 이름이 없다.
이름 대신 변수로 호출할 수 있다.
실행코드로서 런타임에 함수가 정의된다.

세번째,
1
var add = new Function(“x”, “y”, “return x+y;”);
cs
Function이라는 생성자(객체)를 사용하여 함수를 정의하는 방법으로 new와 함께 사용해야 한다.
이 방법으로 함수를 정의하는 경우는 드물다.


함수의 종류
익명함수
1
2
3
var add = function(x,y) {
    return x+y;
}
cs

함수 리터럴을 이용해 정의된 함수를 익명 함수라고 한다.
익명 함수는 이름이 없기 때문에, 주로 변수에 할당되거나 함수 인자의 값 또는 반환값으로 사용된다.


중첩함수(내장함수)
1
2
3
4
5
6
7
function betterExampleNeeded() {
    var a = 1;
    function oneMoreThanA() {
        return a + 1;
    }
    return oneMoreThanA();
}
cs
다른 함수 내부에 정의되는 함수를 중첩 함수(nested function)이라고 한다.
특정 함수에서만 사용할 기능이라면 외부에 노출시키지 않고 내부에 정의해서 사용할 수 있는 것이다.
지역변수의 스코프가 함수 단위로 이루어지기 때문에 내부 함수에서는 내부에 정의된 변수를 참조할 수 있다.
이를 확장하면 객체지향의 캡슐화와 정보은닉으로 연결될 수 있다.
즉, 전역 변수 이름공간을 과도하게 사용하지 않고도 연관된 함수를 묶을 수 있는 것이다.
이는 전역 범위에 들어있는 함수의 수를 낮게 유지할 수 있는 방법 중 하나인 것이다.


콜백함수
1
2
3
4
5
6
7
function MainProgram{
     var arg;
     //콜백 함수를 익명 함수로 전달하는 구조.
     LibraryFunction(arg, function(result){
          //result를 사용한 연산
     });
cs
콜백 구조를 갖고 있는 함수를 말한다.
콜백 구조란 
라이브러리를 호출하는 함수가 라이브러리 함수를 호출하고
라이브러리 함수에서 실행을 다 마치고
다시 특정함수를 호출하는 구조를 말한다.
이 때 다시 호출하는 특정함수를 콜백함수라고 한다.







#포스팅 내용은 황인균 님의 자바스크립트 객체지향 프로그래밍 이라는 책의 내용을 기반으로 작성되었습니다.
Chapter 3-2. 끝