자바스크립트는 다른 언어들과 다르게 함수를 특별한 종류의 값으로 취급합니다.
// 함수 선언
function sayHi(){
alert("hello!");
}
// 함수 표현식
var sayHi = function(){
alert("hello!");
}
함수 표현식은 함수를 생성하고 변수에 값을 할당하는 것처럼 함수가 변수에 할당되었습니다.
함수가 어떤 방식으로 만들어졌는지에 관계없이 함수는 값이고 따라서 변수에 할당할 수 있습니다.
하지만 함수명 뒤에는 ()가 있어야 실행 가능하기에 특별한 종류의 값입니다.
function ask(question, yes, no){
if(confirm(question))
yes();
else
no();
function showOk(){
alert("동의하셨습니다.");
}
function showCancel(){
alert("취소합니다");
}
ask("동의하시나요?", showOk, showCancel);
이 때 ask의 인수 showOk, showCancel을 콜백함수, 콜백 이라고 합니다.
함수 표현식
함수는 표현식이나 구문 구성 내부에 생성됩니다.
함수 표현식은 실제 흐름이 해당 함수에 도달했을 떄 함수를 생성합니다. 따라서 실행 흐름이 함수에 도달했을 떄부터 해당 함수를 사용할 수 있습니다.
함수 선언문
함수는 주요 코드 흐름 중간에 독자적인 구문 형태로 존재합니다.
함수 선언문은 함수 선언문이 정의되기 전에도 호출할 수 있습니다.