함수 표현식 요약
함수 표현식은 함수 선언과는 다르다. 함수 선언에는 이름이 필요하지만 함수 표현식에는 필요하지 않다. 이름 없는 함수 표현식을 익명 함수라고 부른다.
함수를 참조하는 방법으로 명확히 정의된 것이 없어서 재귀 함수는 더 복잡해졌다.
스트릭트 모드가 아닐 때는 재귀 함수에서 함수 이름 대신 arguments.callee를 써서 자기 자신을 호출한다.
클로저
클로저의 스코프 체인에는 자기 자신과 외부 함수, 전역 컨텍스트의 변수 객체가 담긴다.
일반적으로 함수가 실행을 마치면 함수의 스코프 및 그에 담긴 변수 전체가 파괴된다.
함수가 클로저를 반환했다면 해당 함수의 스코프는 클로저가 존재하는 동안에는 메모리에 계속 존재한다.
블록 스코프
함수를 생성하는 즉시 호출하면 내부의 코드를 실행하지만 그에 관한 참조는 남지 않는다.
결과적으로 함수에서 사용한 변수는 모두 파괴되는데 외부 스코프의 특정 변수로 설정된 변수는 예외다.
고유 변수
자바스크립트에 고유 객체 프로퍼티라는 정식 개념은 없지만 클로저를 쓰면 외부 스코프에 정의된 변수에 접근 가능한 공용 메서드를 구현할 수 있다.
고유 변수에 접근 가능한 메서드를 특권 메서드라고 부른다.
특권 메서드를 커스텀 타입에서 구현하려면 생성자나 프로토타입 패턴을 이용하고, 싱글톤에서 구현하려면 모듈이나 모듈 확장 패턴을 이용한다.
Last updated
Was this helpful?