함수 선언(Function Declarations)
지금까지 함수를 선언할 때 아래와 같은 방식으로 선언했었습니다.
function sayHello(){ console.log("hi!"); }
이 방식을 함수 선언(Function Declarations)이라고 합니다.
함수 표현(Function Expressions)
첫번째 방식과는 다르게 아래와 같이 함수를 선언할 수도 있습니다.
var sayHello2 = function(){ console.log("hi!2"); }
변수에 함수를 담는 모양이 되었는데, 이 방식을 함수 표현(Function Expressions)이라고 합니다.
함수 선언과 함수 표현의 차이점
함수 선언으로 생성된 함수든, 함수 표현으로 생성된 함수든, 함수의 호출 방법은 같습니다. 둘의 차이점은 브라우저가 코드를 받아드리는 방식에 차이인데, 아래 코드를 복사해서 실행해봅시다.
sayHello(); function sayHello(){ console.log("hi!"); }
함수 선언전에 함수를 먼저 호출했으므로 실행이 안될 것 같지만, 실행이 됩니다! 이는 코드 해석기가 함수 선언부를 찾아서 먼저 적용한다음 나머지 코드들을 실 행시키기 때문입니다.
반면에 함수 표현은 반드시 함수 호출 전에 이루어져야 합니다.
sayHello2(); var sayHello2 = function(){ console.log("hi!2"); }
위 코드를 실행하면 sayHello2함수를 찾을 수 없다는 에러가 납니다.