안녕하세요.
html5와 css3은 나름대로 공부를 했고, jquery 를 공부하다가 javascript에 대한 기초가 없어서 javascript를 책만 보고 독학으로 공부중입니다..=.-;
javascript에 관한 꼼꼼한 설명이 잘 된 책을 만나지 못해선지,,
갈수록 조금 헷갈리는 부분이 있어서 여기다 질문을 올려봅니다..
일단, 전체구문입니다.
==============
<script>
/*
예제 03: 1초에 한번씩 숫자 값 출력하기
변수 값을 1초에 한 번 1씩 증가시키고 이 값을 화면에 출력해 주세요.
단, 정지버튼(#stop)을 누르면 더 이상 실행되지 않게 타이머 함수를 중지시켜 주세요.
*/
$(document).ready(function() {
var $output = $("#output");
var count = 0;
var timerID=0; // 이 부분을 잘 모르겠습니다. 왜 숫자 0이 들어가는지요?
timerID = setInterval(function() {
count++;
$output.text(count);
}, 1000);
$("#stop").click(function() {
clearInterval(timerID);
});
})
</script>
</head>
<body>
<button id="stop">멈춤</button>
<div id="output">
0
</div>
</body>
</html>
============
위 구문은 원문입니다.
이렇게 돼어 있는데요..
$(function(){
var count = 0;
$output = $("#output");
setInterval(function(){
count++;
$output.text(count);
},2000);
});
위 함수는 제가 잘 이해를 합니다..
그런데, clearInterval()함수를 사용할때,,
var timerID=0; // 이 부분을 잘 모르겠습니다. 왜 숫자 0이 들어가는지요?
timerID = setInterval(function() {
count++;
$output.text(count);
}, 1000);
$("#stop").click(function() {
clearInterval(timerID);
});
위에 밑줄을 친 구문은 이해를 하겠는데,,
왜 var timerID에 숫자 0 이 들어가는지를 모르겠습니다. -.-;;;
그래서, 일단은 맨위 원문에서 var timerID = 0; 이것을 삭제를 해도
작동이 되더군요....
그렇다면, 왜 책의 저자는 굳이 var timerID = 0; 이라는 변수는 넣었는지..
설령 그런 변수는 넣는다해도 왜 var timerID에 0을 넣었는지 궁금합니다. -.-;;;;
귀찮은 질문올린 것 같네요...^^;;
자세한 설명을 해주시면 감사드립니다...^^;;;;;
setInterval() 함수의 리턴 값에 대한 질문으로 보여집니다.
setInterval() 타이머 함수가 실행되면 이 함수는 이 타이머의 실행을 멈출 때 사용할 ID 값을 숫자로 반환하게 됩니다.
이 ID값을 clearInterval() 함수의 인자로 넣어주면 타이머가 멈추게 됩니다.
올려 주신 예제에서 보면 setInterval() 함수에 의해 반환된 값이 timerID라는 변수 값으로 담기게 되고 이 변수 값을 clearInterval(timerID) 라고 인자로 넣어줄 때 타이머가 멈추도록 되어있습니다.
그런데 만약 setInterval() 함수가 여러 개가 있으면 각 setInterval() 함수마다 각각 ID가 숫자로 하나씩 부여가 됩니다.
다시 말해, 처음 setInterval()함수의 ID는 1이 되고, 다음 setInterval()의 ID는 2가 되고..., 이런 식입니다.
즉, 1부터 부여가 되기 때문에 0이 부여되는 일은 없습니다.
올려 주신 예제에서 timerID에 0을 부여한 이유는 아직 setInterval() 함수의 ID가 부여되지 않았다는 의미로 0값을 초기 값으로 넣어준 것입니다.
물론 초기 값을 세팅하지 않아도 실행하는데는 문제가 없지만 setInterval() 함수의 리턴 값 타입이 숫자형이기 때문에 초기 값을 0으로 좀 더 명확하게 세팅한 의미라고 보시면 되겠습니다.