자바스크립트에도 특별한 대우를 받는 일급 객체(first-class citizen)가 있습니다.
대표적인 일급 객체 중 하나가 함수입니다.
함수 표현식(function expression)은
함수 선언식(function declaration)과 다르게 호이스팅(Hoisting)이 적용되지 않습니다.
호이스팅은 선언된 위치에 관계없이 어디서든 함수를 사용할 수 있도록 합니다.
코드가 실행되는 과정에서 함수 선언부를 코드의 최상단으로 끌어올리는 것처럼 보이게 합니다.
호이스팅(Hoisting)
선언된 위치에 관계없이 함수(함수선언식)나 변수(var)를 사용할 수 있는 용어를 말한다.
코드 유지보수나 실수를 줄이기 위해서는 호이스팅에 의존하는것을 줄이는 것이 좋다.
고차 함수(higher order function)는 함수를 인자(argument)로 받을 수 있고,
함수의 형태로 리턴할 수 있는 함수입니다.
이때 다른 함수(caller)의 인자(argument)로 전달되는 함수를 콜백 함수(callback function)라고 합니다. 콜백 함수의 이름은, 어떤 작업이 완료되었을 때 호출하는 경우가 많아서, 답신 전화를 뜻하는 콜백이라는 이름이 붙여졌습니다.
콜백 함수를 전달받은 고차 함수는, 함수 내부에서 이 콜백 함수를 호출(invoke) 할 수 있습니다. caller는 조건에 따라 콜백 함수의 실행 여부를 결정할 수 있습니다. 아예 호출하지 않을 수도 있고, 여러 번 실행할 수도 있습니다. 특정 작업의 완료 후에 호출하는 경우는 이후에 충분히 접할 수 있습니다.