함수 표현식 요약

  • 함수 표현식은 함수 선언과는 다르다. 함수 선언에는 이름이 필요하지만 함수 표현식에는 필요하지 않다. 이름 없는 함수 표현식을 익명 함수라고 부른다.

  • 함수를 참조하는 방법으로 명확히 정의된 것이 없어서 재귀 함수는 더 복잡해졌다.

  • 스트릭트 모드가 아닐 때는 재귀 함수에서 함수 이름 대신 arguments.callee를 써서 자기 자신을 호출한다.

클로저

  • 클로저의 스코프 체인에는 자기 자신과 외부 함수, 전역 컨텍스트의 변수 객체가 담긴다.

  • 일반적으로 함수가 실행을 마치면 함수의 스코프 및 그에 담긴 변수 전체가 파괴된다.

  • 함수가 클로저를 반환했다면 해당 함수의 스코프는 클로저가 존재하는 동안에는 메모리에 계속 존재한다.

블록 스코프

  • 함수를 생성하는 즉시 호출하면 내부의 코드를 실행하지만 그에 관한 참조는 남지 않는다.

  • 결과적으로 함수에서 사용한 변수는 모두 파괴되는데 외부 스코프의 특정 변수로 설정된 변수는 예외다.

고유 변수

  • 자바스크립트에 고유 객체 프로퍼티라는 정식 개념은 없지만 클로저를 쓰면 외부 스코프에 정의된 변수에 접근 가능한 공용 메서드를 구현할 수 있다.

  • 고유 변수에 접근 가능한 메서드를 특권 메서드라고 부른다.

  • 특권 메서드를 커스텀 타입에서 구현하려면 생성자나 프로토타입 패턴을 이용하고, 싱글톤에서 구현하려면 모듈이나 모듈 확장 패턴을 이용한다.

Last updated

Was this helpful?