일련의 과정을 문으로 구현하고 코드 블록으로 감싸 하나의 실행 단위로 정의한 것이다.
함수에 입력을 전달 받는 변수를 매개변수, 입력을 인수, 출력을 반환값 이라 한다.
function add (x, y) {
return x + y;
}
add(1,2);
add : 함수 이름
x, y : 매개변수 (parameter)
x+y : 반환값
1, 2 : 인수 (arguments)
함수를 이용하게 되면 몇 번이든 호출할 수 있어 코드의 재사용을 높일 수 있다. 또한 코드의 중복을 억제하여 유지보수의 편의성을 높이고, 실수를 줄여 코드의 신뢰성을 높인다.
다만, 이런 편의성을 높이기 위해서는 적절한 함수 이름과 변수를 사용해 코드의 가독성을 높여야 한다.
함수 리터럴
자바스크립트에서 함수는 객체 타입의 값이다. 즉, 함수는 객체다.
함수도 함수 리터럴로 생성할 수 있다. 함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성된다.
var f = function add(x,y) {
return x + y;
};
함수는 객체지만 일반 객체와 다르게 호출할 수 있다.
함수는 다양한 방법으로 정의할 수 있다.
변수는 선언했다고 하지만, 함수는 정의한다고 표현한다.
함수 선언문
function add(x,y) {
return x + y;
}
console.log(add); // f add(x,y)
console.log(add(1,2)); // 3
---
var add = function add(x,y) {
return x + y;
}
함수 선언문은 함수 이름을 생략할 수 없다.
자바스크립트 엔진은 생성된 함수를 호출하기 위해 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성하고, 거기에 함수 객체를 할당한다.
함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출한다.