대단한 동현 블로그

이게 말이냐 똥이냐 싶겠지만 진짜다.

 

트레이딩 뷰 라이브러리의 불친절한 공식문서를 해독하며 프로덕션에 붙이다 분봉이 제대로 붙지 않는 상황이 있어서 여기저기 콘솔을 찍어봐도 문제를 찾을 수가 없었다.

 

js 이벤트루프 특성상 이 스코프 안에서 다른 요소가 간섭할 방법이 없다. 공유자원을 가지지 못하는 사실상 멀티프로세스에 가까운 web worker때문도 아니고, event bus 부분도 떼버려서 문제가 없었다. 진짜 귀신이 곡할 노릇인데…

 

범인은 console.log였다… object의 참조를 찍을때 이후에 그 object가 변하면 변한 값으로 찍히더라..

왜 그러냐면 브라우저 최적화를 위해 그 라인에서 바로 찍지 않고 작업이 종료된 이후에 찍을 수도 안 찍을 수도 있다.. 브라우저마다 다름

let obj = { count: 0 };
console.log(obj);
for(let i = 0; i < 1000000; i++) {
    obj.count = i;
} // 999999로 찎힐수도 아닐수도 잇음

정말 골때리는 환경이 아닐 수 없다..

object같이 참조타입을 찍을 땐 이를 유의하여 […obj] 같이 깊은 복사를 해서 찍도록 하자..

하 씹근본언어 C언어가 그립다

'<language> > javascript' 카테고리의 다른 글

javascript class 업캐스팅  (0) 2024.09.21
javascript 얕은 복사 != 얕은 복사  (2) 2024.07.14
js는 비동기 큐가 2개다?  (1) 2024.03.26
클로저  (1) 2024.01.30
profile

대단한 동현 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!