function <function name>(<매개변수1>, <매개변수2>, ...) {}
선언적 함수
는 함수를 선언할 때 이름을 붙여주는 함수입니다. 즉, 따로 변수에 넣어주지 않고 선언할 대 붙여준 이름으로 호출하면 됩니다. function(<매개변수1>, <매개변수2>, ...) {}
익명함수
는 말그대로 이름이 없는 함수입니다. 대신 변수명을 마치 함수명처럼 사용해서 함수를 호출하거나 변수값을 이동시키는데 사용할 수 있습니다. 따라서 익명함수를 선언하고 사용하기 위해서는 변수에 넣어서 사용하여야 합니다.
오류발생
정상적으로 hello가 출력됨
단 한번만 사용하는 함수는 일반 함수가 아닌 익명 함수로 사용하는 것이 좋습니다.
일반 함수는 호이스팅이 발생하기 때문에 항상 메모리를 차지합니다.
호이스팅
:함수의 선언과 초기화를 분리한 후 선언한 코드의 최상단으로 옮기는 것 처럼 해석하는 것하지만 한 번의 사용을 위해서 메모리를 계속해서 차지하고 있는 것은 매우 비효율적이므로 재사용이 필요 없는 함수의 경우에는 불필요한 메모리 낭비를 최소화하기 위하여 익명함수를 사용합니다.
일반 함수는 전역적이며, 전체가 다 호이스팅 되므로 호출의 위치와 구현의 위치간에 연관관계가 없습니다. 또한, 재사용될 기능에 주로 사용됩니다.
익명 함수는 선언부만 호이스팅되며 호출의 위치와 구현의 위치간에 순서가 알맞아야 하고, 한번만 사용하는 기능에 사용됩니다.