22.07.05 16:54 작성
·
287
0
if (delay !== null) {
let id = setInterval(tick, delay);
return () => clearInterval(id);
}
let id = setInterval(tick, delay);
답변 1
1
2022. 07. 06. 12:01
null일 때 왜 저게 실행되냐면요.
일단 조건문 상에서는 null이 아닐 때 실행되는 게 맞고, 예를 들어 딜레이가 500이라고 치면
setInterval 500으로 실행되면서 return쪽 clearInterval 코드도 등록됩니다. 나중에 딜레이가 다른 값으로 바뀌면 clearInterval이 실행되게 되는 겁니다.
500에서 null로 딜레이가 바뀌면 clearInterval이 실행되는 겁니다. 그래서 null이 되면 실행된다고 말씀드린 겁니다.
2022. 07. 10. 11:23
아하 "조건문에서 딜레이가 null일 때" 가 아니라
딜레이 500일 때 clearInterval이 등록이 된 상태 -> "딜레이가 500에서 null로 변경"되면서 return에 있던 , 이미 등록되어 있던 clearInterval(딜레이 500짜리) 실행이 되는걸 말씀해주신거군요?