JavaScript에서는 함수도 객체다. 함수는 일종의 값이다. 거의 모든 언어가 함수를 가지고 있다. JavaScript의 함수가 다른 언어와 함수와 다른 점은 함수가 값이 될 수 있다는 점이다.
function a (){} //함수
var a = function(){}
위의 예제는 함수 a는 변수 a에 담겨진 값이다.
a = {
b:function() { //메소드
}
}
객체를 정의했다.
그 객체안에 b라는 키가 있고 b는 변수와 같은 역할을 하고 있다. 왜냐하면 값을 갖고 있기 떄문이다. 이것은 속성(Property)프로퍼티라 불린다.
그리고 그 속성에 저장된 값이 함수라 한다면 그 함수를 메소드(method)라 부른다.
function a (){} //함수
a = {
b:function() { //메소드
}
}
객체안에 정의되어 있는 함수는 메소드
함수는 값이기 때문에 다른 함수의 인자로도 전달이 가능하다.
function cal(func, num){
return func(num)
}
function increase(num){
return num+1
}
function decrease(num){
return num-1
}
alert(cal(increase,1));
alert(cal(decrease,1));
함수는 함수의 리턴 값으로도 사용할 수 있다.
함수는 배열의 값으로도 사용할 수 있다.
함수는 변수, 매개변수, 리턴값으로 사용될 수 있다. 이러한 데이터로 사용될수 있는 함수는 'first-class citizen'이라 한다.