const a = {
b: function() {
return 5;
},
c:a.b()
}
위 소스처럼 데이터를 객체구조로 정리하고싶을때,
자기자신의 형제 메소드를 이용해야할 때가 있음
a.c는 a.b를 이용해 자기자신을 초기화하려 하지만,
초기화단계에서 접근해버리면 a의 초기화가 마무리지어지지 않기때문에
a를 제대로 찾지 못해버림
이럴땐 즉시실행함수를 이용해 초기화 작업을 진행한다.
const a = (function(){
const b = function() {
return 5;
};
const c = b()
return {b,c}
})()
위처럼 객체구조의 초기화가 아닌,
함수를 이용한 후, 객체를 리턴해주면
c를 초기화 할때 바로 같은단계에서 선언된 b를 참조할 수 있게됨
1번의 a.c는 생성이 완료되지 않는 a를 탐색하려해서 에러가 생기고,
2번의 a.c는 a내부에 함수를이용해 스코프를 만든 후,
b를 생성 -> c에서는 바로 b를 탐색
하기때문에 탐색 방법자체가 다르다고 생각됨
'js > 개발' 카테고리의 다른 글
js rest parameters (0) | 2024.10.08 |
---|---|
js async & await (0) | 2024.08.07 |
js 클로저 (0) | 2023.02.23 |
js 생성자함수 (0) | 2023.02.15 |
js 재귀함수 & 콜백함수 (0) | 2023.02.12 |
댓글