web/javascript

[Javascript] 함수를 생성하는 방법들

sungjine 2016. 12. 15. 16:58
반응형

자바스크립에서 함수를 생성하는 방법은 세 가지가 있다. 이 방법들은 같은 함수를 생성하지만 동작방법이 조금 다르다.

1. 함수 선언문

2. 함수 표현식

3. Function() 생성자 함수

 

1. 함수 선언문

함수 선언문은 반드시 함수명이 정의되어 있어야 한다.

ex) function a(){}

 

2. 함수 표현식

함수 표현식은 리터럴 방식으로 함수명이 없는 익명 함수를 만들고 그 함수를 변수에 담아서 사용하는 것이다.

ex) var a = function(){}

함수명이 있는 함수를 기명 함수 표현식이라고 하는데 만약 기명 함수 표현식을 함수 표현식으로 사용할 때는 함수명을 사용하면 안 된다.

ex) var b = function bb(){}

bb; // is not defined 에러가 발생한다.

 

3. Function() 생성자 함수

말 그대로 Function() 생성자 함수를 이용하여 함수를 만드는 방법이다.

ex) var a = new Function();

 

*비교 1

함수 선언문이나 함수 표현식으로 함수를 만들 때 함수 리터럴 방식으로 만들지만 내부적으로는 Function() 생성자 함수를 이용하여 만들어지는데 일반적으로 Function() 생성자 함수를 사용한 함수 생성 방법은 잘 사용되지 않는 다고 한다.

 

*비교 2

함수 선언문은 호이스팅을 무시하기 때문에 코드의 구조를 엉성하게 만들 수 있도 있다. 때문에 더글라스 크락포드님이 저서를 통해 함수 표현식만을 사용할 것을 권하고 있다.

ex)

add(1,2) // 3

function add(a, b) { return a + b; }

add(1,2) // 3

min(2,1) // is not a function 에러 발생

var min = function(a, b) { return a - b; }

min(2,1) // 1

반응형