12.1 함수란?

함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 프로그래밍 언어의 함수도 수학의 함수와 같은 개념이다.

프로그래밍 언어의 함수는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다.

매개변수(parameter):함수 내부로 입력을 전달받는 변수를  인수(argument):입력  반환값(return value):출력

함수는 함수 정의(function definition)를 통해 생성한다.

함수 호출(function call/invoke) 이란?

인수를 매개변수를 통해 함수에 전달하면서 함수의 실행을 명시적으로 지시해야 하는데 이를 함수호출이라 한다. 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고, 실행 결과, 즉 반환값을 반환다.

12.2 함수를 사용하는이유

함수는 몇 번이든 호출할 수 있으므로 코드의 재사용이라는 측면에서 매우 유용하다. 코드의 중복을 억제하고 재사용성을 높이는 함수는 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높인다. 적절한 함수 이름은 함수의 내부 코드를 이해하지 않고도 함수의 역할을 파악할 수있게 도와 코드의 가독성을향상시킨다.

12.3 함수 리터럴

자바스크립트의 함수는 객체타입의 값이다. 객체를 객체 리터럴로 생성하는 것처럼 함수도 함수 리터럴로 생성할 수 있다.

함수 리터럴의 구성 요소 설명
함수이름 - 함수 이름은 식별자다. 네이밍 규칙을 준수해야 한다.

리터럴은 값을 생성하기 위한 표기법이다. 따라서  함수 리터럴도 평가되어 값을 생성하며, 값은 객체다 즉 함수는 객체다.

함수객체와 일반객체의 차이점?

일반 객체는 호출할 수 없지만 함수는 호출할 수 있다. 그리고 일반 객체에는 없는 함수 객체만의 고유한 프로퍼티를 갖는다.