168 ~ 188 page
함수 호출
- 함수는 함수를 가리키는 식별자와 한 쌍의 소괄호인 함수 호출 연산자로 호출한다.
- 함수 호출 연산자 내에는 0개 이상의 인수를 쉼표로 구분해서 나열한다.
- 매개변수의 인수가 순서대로 할당되고 함수 몸체의 문들이 실행되기 시작한다.
매개변수와 인수
- 함수를 실행하기 위해 필요한 값을 함수 외부에서 함수 내부로 전달할 필요가 있는 경우, 매개변수를 통해 인수를 전달한다.
- 인수는 값으로 평가될 수 있는 표현식
- 인수는 함수를 호출할 때 지정하며, 개수와 타입에 제한이 없다.
인수 확인
- 자바스크립트 함수는 매개변수와 인수의 개수가 일치하는지 확인하지 않는다.
- 자바스크립트는 동적타입 언어다. 따라서 자바스크립트 함수는 매개변수의 타입을 사전에 지정할 수 없다.
매개변수의 최대 개수
- ECMAScript 사양에서는 매개변수의 최대 개수에 대해 명시적으로 제한하고 있지 않다.
- 매개변수는 순서에 의미가 있다.
- 매개변수가 많아지면 함수를 호출할 때 전달해야 할 인수의 순서를 고려해야한다.
- 매개변수는 최대 3개이상을 넘지 않는 것을 권장한다.
- 이상적인 함수는 한 가지 일만 해야 하며 가급적 작게 만들어야 한다.
- 객체를 인수로 사용하는 경우텍스트 프로퍼티 키만 정확히 지정하면 매개변수의 순서를 신경쓰지 않아도 된다.
반환문
- 함수는 return 키워드와 표현식으로 이뤄진 반환문을 사용해 실행 결과를 함수 외부로 반환할 수 있다.
- 함수 호출은 표현식이다. 함수 호출 표현식은 return 키워드가 반환한 표현식의 평가 결과, 즉 반환문 이후에 다른 문이 존재하면 그 문은 실행되지않고 무시된다.
- 반환문은 return 키워드 뒤에 오는 표현식을 평가해 반환한다.
- return 뒤에 반환값으로 사용할 표현식을 명시적으로 지정하지 않으면 undefined가 반환된다.
- 반환문은 생략이 가능하다.
- 반환문은 함수 몸체 내부에서만 사용이 가능하다.
참조에 의한 전달과 외부 상태의 변경
- 원시 값은 값에 의한 전달, 객체는 참조에 의한 전달 방식으로 동작한다.
- 매개변수도 함수 몸체 내부에서 변수와 동일하게 취급되므로 매개변수 또한 타입에 따라 값에 의한 전달, 참조에 의한 전달 방식을 그대로 따른다.
다양한 함수의 형태
즉시 실행 함수
- 함수의 정의와 동시에 즉시 호출되는 함수를 즉시 실행 함수라고 한다. 즉시 실행 함수는 단 한 번만 호출되며 다시 호출할 수 없다.
- 함수 이름이 없는 익명 함수를 사용하는 것이 일반적이다.
- 즉시 실행 함수는 반드시 그룹 연산자 () 로 감싸야 한다.
function a () {
// ....
} ();
중첩 함수
- 함수 내부에 정의된 함수를 중첩 함수 또는 내부 함수라 한다.
- 중첩 함수를 포함하는 함수는 외부 함수라 부른다.
- 중첩 함수는 외부 함수 내에서만 호출할 수 있다.
- 일반적으로 중첩 함수는 자신을 포함하는 외부 함수를 돕는 헬퍼 함수의 역할.
콜백 함수
- 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백 함수라고 하며, 매개 변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수를 고차 함수라고 한다.
- 고차 함수는 콜백 함수를 자신의 일부분으로 합성한다.
- 고차 함수는 매개변수를 통해 전달 받은 콜백 함수의 호출 시점을 결정해서 호출한다.
- 고차 함수에 의해 호출되며 이때 고차 함수는 필요에 따라 콜백 함수에 인수를 전달할 수 있다.
순수 함수와 비순수 함수
- 함수형 프로그래밍에서는 어떤 외부 상태에도 의존하지도 않고, 변경하지도 않는, 즉 부수 효과가 없는 함수를 순수 함수라한다.
- 외부 상태에 의존하거나 외부 상태를 변경하는, 즉 부수 효과가 있는 함수를 비순수 함수라고 한다.
- 순수 함수는 일반적으로 최소 하나 이상의 인수를 전달 받는다.
- 순수 함수는 인수를 변경하지 않는 것이 기본이다. 순수 함수는 인수의 불변성을 유지한다.
- 순수 함수의 또 하나의 특징은 함수의 외부 상태를 변경하지 않는다는 것이다.
- 순수 함수는 어떤 외부 상태에도 의존하지 않으며, 외부 상태를 변경하지도 않는 함수다.
- 반대로 함수의 외부 상태에 따라서 달라지는 함수, 외부 상태에 의존하는 함수를 비순수 함수라고 한다.
- 비순수 함수의 특징은 순수 함수와는 달리 함수의 외부 상태를 변경하는 부수효과가 있다는 것이다. 즉, 비순수 함수는 외부상태에 의존하거나 외부 상태를 변경하는 함수다.