자바스크립트의 함수는 리턴 타입을 명시하지 않는다. function 키워드로 함수를 선언하며, 괄호() 안에서 매개변수를 받으며 (변수 타입은 명시하지 않음) , return 을 통해 값을 반환한다.
- ex )
var a = 1;
var b = 5;
function plus (a,b){
var sum = a + b;
return sum;
}
var sum_num = sum(a,b);
자바스크립트 함수 내부에서 선언한 변수는 외부에서 참조할 수 없다.
함수 안에 함수 선언 또한 가능한데, 이경우에도 외부의 함수에서 내부의 변수를 참조할 수 없다.
자바스크립트 함수는 일반적인 언어와 달리 독특한 점이 있다.
Javascript 에서 함수는 first-class object(citizen) 으로 취급된다.
first-class object란 다음과 같은 조건을 만족하는 객체를 말한다.
- first-class object의 조건
변수나 데이터 구조안에 담을 수 있다.
파라미터로 전달 할 수 있다.
반환값(return value)로 사용 할 수 있다.
할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
동적으로 프로퍼티 할당이 가능하다.
자바스크립트에서 일반적으로 사용되는 객체변수는 모두 first-class object라고 볼 수 있다. 함수 조차 이와 같은 객체로 취급된다.
- 예제
var plusFunc = function (a, b) {
return a + b;
};
// 익명의 함수를 만들고 plusFunc 변수에 대입
plusFunc(3, 5);
- 함수 자체를 반환
function a(x) {
var b = function(y) {
return x + y;
};
return b;
}
a(3)(4); // 7 반환
- 함수를 객체의 프로퍼티로도 사용할 수 있다
var jacob = {
'age': 18,
'run': function() {
alert('Jacob is running');
},
'sleep': function() {
alert('Jacob sleeps');
},
};