객체로서의 함수와 기명 함수 표현식
-
함수는 객체
-
객체로서의 함수에서 name 프로퍼티에서 함수 선언부 이름 가져옴. 함수 선언부에 이름 없을 때 JS 엔진이 컨텍스트(할당 등) 이용해 이름 추론
-
객체 메서드 이름은 함수 이름 자동 할당 안 되고 빈 문자열 저장
-
객체로서의 함수에서 length 프로퍼티에서 함수 선언부에 있는 인수의 수 얻음. 나머지 매개변수는 포함 안 됨
-
클로져를 함수 프로퍼티로 대체해서 외부 렉시컬 환경이 아닌 함수 프로퍼티에 저장해서 사용 가능
-
클로져 사용한 경우엔 외부 코드에서 접근할 수 없지만 프로퍼티 사용한 경우 외부에서 값 수정 가능
-
기명 함수 표현식으로 함수 표현식으로 함수 정의 후 이름 부여 가능
-
기명 함수 표현식은 표현식 내부에선 자기 자신 참조 가능하지만 외부에선 그 이름 사용 불가능
-
기명 함수 표현식으로 재귀 호출과 같이 함수 내부에서 자기 자신 호출 가능
-
함수에 다양한 프로퍼티 추가해서 함수의 일과 함수의 프로퍼티 기능 둘 다 사용 가능. 프로퍼티와 변수는 엄밀히 다르므로 구분 필요.
-
함수 선언문 에선 내부 이름 지정 불가능 하며 필요 할 시 기명 함수 표현식으로 다시 정의.