함수 이름과 괄호로 코드를 실행하고 반환값을 사용합니다.
함수를 선언하는 것만으로 본문은 실행되지 않습니다. greet는 함수 자체를 가리키고 greet()는 호출 결과를 뜻하며 콜백에는 함수 참조를 전달하는 경우가 많습니다.
greet는 한 번 선언되고 두 번 호출됩니다. 첫 호출에서는 name이 민수, 두 번째 호출에서는 지수가 되어 각각 다른 인사 문장을 돌려주고, 그 결과가 first와 second에 따로 저장됩니다. 출력은 두 문장을 줄바꿈으로 이은 것이라 안녕하세요, 민수님!과 안녕하세요, 지수님!이 두 줄로 보입니다.
함수가 아닌 값 뒤에 괄호를 붙이면 TypeError가 발생합니다. 메서드 이름을 잘못 적으면 그 속성은 undefined이고, 여기에 괄호를 붙여 호출하는 순간 is not a function이라는 메시지와 함께 실행이 멈춥니다. 이 메시지가 보이면 호출하려던 이름의 철자부터 확인합니다.
이벤트 등록에 handler()를 넘기면 등록 시점에 즉시 실행됩니다. 상황에 따라 handler 참조를 넘기세요.
직접 바꿔보세요greet를 세 번 호출하고 각 반환값을 배열에 담으세요.