본문 바로가기

Today I Learned

모던 자바스크립트 Deep Dive 12장 함수

🔑 키워드 정리

매개변수 : 함수 내부로 입력을 전달받는 변수. 최대 3개 이상을 넘지 않는 것이 좋다.
인수 : 함수를 호출할 때 입력하는 변수. 값으로 평가될 수 있는 표현식이어야 한다.

함수 선언문 : 함수 이름을 생략할 수 없다. 표현식이 아닌 문이다. 그러므로 변수에 할당할 수 없다.

function add(x,y){
	return x+y;
}
 

함수 표현식 : 표현식인 문이다.

var add = function (x,y){
	return x+y;
}

 

중첩(내부) 함수 : 함수 내부에 정의된 함수. 외부 함수를 돕는 헬퍼 역할을 한다.
외부 함수 : 중첩 함수를 포함하는 함수.

콜백 함수(Callback Function) : 함수의 매개변수를 통해서 다른 함수의 내부로 전달되는 함수
고차 함수(Higher-Order Function, HOF) : 함수의 외부에서 콜백 함수를 전달받은 함수

비순수 함수 : 부수효과가 있는 함수.
순수 함수 : 부수효과가 없는 함수. 인숭의 불변성을 유지한다. 외부 상태를 변경하지 않는다. 비순수 함수보다 순수함수를 사용하는 것이 좋다.

🗒 내용 정리

함수 이름과 호출

함수 이름은 함수 몸체에서만 참조할 수 있는 식별자다. 즉, 함수 밖에서 함수를 호출할 수 없다. 자바스크립트 엔진이 암묵적으로 식별자를 생성하는 것이다. 우리는 이 식별자로 함수를 호출할 수 있다. 함수를 호출하면 현재의 실행 흐름이 중단되고 호출된 함수로 실행 흐름을 옮긴다.

함수 호이스팅

함수 표현식으로 정의한 함수는 함수 표현식 정의 이전에 호출할 수 없다. 변수 호이스팅처럼 동작하기 때문이다. 함수 리터럴이 할당되기 전에는 undefined 로 초기화된다.

매개변수와 인수

  • 인수가 할당되지 않은 매개변수의 값은 undefined 다. 매개변수보다 인수가 더 많은 경우 초과된 인수는 무시된다.
  • 원시 타입 인수는 값 자체가 복사된다. 반면, 객체 타입의 인수는 참조 값이 복사되어 매개변수에 전달되기 때문에 부수효과가 발생한다. 그러므로 객체의 변경을 추적하려면 옵저버 패턴을 이용한다.
  • 자바스크립트의 함수는 일급 객체다. 함수를 값처럼 자유롭게 사용할 수 있다는 의미다. 그러므로 함수의 매개변수를 통해서 함수 내부로 전달도 할 수 있다. 

반환문의 역할

  1. 함수의 실행을 중단하고 함수 몸체를 빠져나간다.
  2. return 키워드 뒤에 오는 표현식을 평가해서 반환한다.