그림 13-15 두 카드의 색이 다를 때 백그라운드에 타이머 추가
여기서 버그의 원인을 알 수 있습니다. 태스크 큐에 들어온 순서대로 호출 스택으로 가다 보니 8번과 9번 카드의 콜백 함수가 0.5초 타이머의 콜백 함수보다 먼저 실행됩니다. 8번 카드의 콜백 함수에서 clicked.push(this)가 실행되어 clicked[2]에 8번 카드가 들어가게 되고, 9번 카드의 콜백 함수에서는 clicked[3]에 9번 카드가 들어가게 됩니다.
그림 13-15 두 카드의 색이 다를 때 백그라운드에 타이머 추가
여기서 버그의 원인을 알 수 있습니다. 태스크 큐에 들어온 순서대로 호출 스택으로 가다 보니 8번과 9번 카드의 콜백 함수가 0.5초 타이머의 콜백 함수보다 먼저 실행됩니다. 8번 카드의 콜백 함수에서 clicked.push(this)가 실행되어 clicked[2]에 8번 카드가 들어가게 되고, 9번 카드의 콜백 함수에서는 clicked[3]에 9번 카드가 들어가게 됩니다.