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. 끝
'Dev.FrontEnd > JavaScript' 카테고리의 다른 글
4. 자바스크립트의 변수 스코프(Variable scope)에 대하여 (0) | 2016.07.08 |
---|---|
3-3. 자바스크립트의 함수 / Argument (0) | 2016.07.06 |
3-1. 자바스크립트의 함수(Function) / 함수의 역할과 함수 모델링 (0) | 2016.07.06 |
2. 자바스크립트 자료형 / 원시데이터형 (0) | 2016.07.05 |
1. 자바스크립트의 기본 개념, 프로그램 실행절차 / JavaScript as language (0) | 2016.07.05 |