해결된 질문
작성
·
128
답변 2
0
안녕하세요! 부드러운 족제비님!
아래 답변을 참고해 주세요!^^
============================================================
let isStarted = false 사용하는 이유
=> 함수의 중복 실행을 방지하기 위해 사용되었어요!
쉬운 예를 하나 들어볼까요?!
철수, 영희, 훈이가 동굴에 들어갔는데, 노란색 스위치를 발견했어요!
노란색 스위치를 누르면 금괴를 획득할 수 있답니다!
스위치는 1번 밖에 누를 수 없는데요!
코드가 아래와 같다면 어떨까요?
function 노란스위치(){
return "금괴 1개"
}
const 철수 = 노란스위치() // 금괴 1개
const 영희 = 노란스위치() // 금괴 1개
const 훈이 = 노란스위치() // 금괴 1개
스위치는 1번 밖에 누를 수 없는데, 3번이나 눌렸고, 철수 영희 훈이 각각 금괴를 1개씩 얻었어요!
따라서, 스위치는 1번만 눌리도록 코드를 변경해 주어야 할 것 같네요!
let isPushed = false // 질문에서의 isStarted와 동일한 역할
function 노란스위치(){
if(isPushed === false){
isPushed = true
return "금괴 1개"
} else {
return "더이상 금괴가 없어요."
}
}
const 철수 = 노란스위치() // 금괴 1개
const 영희 = 노란스위치() // 더이상 금괴가 없어요.
const 훈이 = 노란스위치() // 더이상 금괴가 없어요.
질문에서의 isStarted는 동일한 맥락으로 타이머를 1회만 작동하게 만드는 코드로 이해하시면 되겠죠?!^^
============================================================
let timer 에서 timer = setInterval 재할당 하는 이유
2-1)
let timer = setInterval()
2-2)
let timer
timer = setInerval()
=> 본 수업에서의 위 2가지 방식의 차이는 없습니다!^^
따라서, 2-1) 방식으로 진행하셔도 무관해요!
============================================================
clearInterval(timer)를 사용하는 이유
=> 타이머가 끝났을 때, 종료하기 위함이에요!^^
아래의 예시를 볼까요?!
아래는 1초에 1번씩 "바나나" 를 콘솔에 보여주는 코드랍니다
setInterval(() => {
console.log("바나나")
}, 1000)
// [ 실행결과 ]
// 바나나
// 바나나
// 바나나
// 바나나
// 바나나
// 바나나
// ... 계속
위 코드를 실행해 보니, "바나나"를 무한히 보여주고 있는데요!
딱 3번만 보여주고 싶다면, 아래처럼 만들어 볼 수 있겠죠!
let 보여준횟수 = 0
setInterval(() => {
console.log("바나나")
보여준횟수 = 보여준횟수 + 1
if(보여준횟수 >= 3) {
// 보여준횟수가 3번 이상인 경우, 타이머 종료해야함
}
}, 1000)
여기서, 타이머를 종료하려면 어떻게 하는게 좋을까요?!
네! 바로 이 때 사용하는 것이 claerInterval() 이랍니다!^^
따라서, 아래와 같이 setInterval을 변수에 담아 놓고, 해당 변수를 필요할 때 종료시켜 주면 되겠죠?!^^
let 보여준횟수 = 0
let 나의타이머 = setInterval(() => {
console.log("바나나")
보여준횟수 = 보여준횟수 + 1
if(보여준횟수 >= 3) {
claerInterval(나의타이머) // 보여준횟수가 3번 이상이므로 타이머 종료해야함
}
}, 1000)
// [ 실행결과 ]
// 바나나
// 바나나
// 바나나
참고) 보여준횟수가 3보다 작을 때만 "바나나"를 보여주면 굳이 타이머를 종료하지 않아도 되는데요?
let 보여준횟수 = 0
setInterval(() => {
if(보여준횟수 < 3){
console.log("바나나")
보여준횟수 = 보여준횟수 + 1
}
}, 1000)
// [ 실행결과 ]
// 바나나
// 바나나
// 바나나
네! 맞아요!
하지만, 이 경우는 사실상 "바나나"만 화면에 안찍힐 뿐, setInterval()이라는 함수는 계속 실행중인 상태이기 때문에, 컴퓨터는 계속 1초에 1번씩 보여준횟수가 3보다 작은지 비교하는 일. 즉, if(보여준횟수 < 3) 을 검사 해야 한답니다! 무한히요!
따라서, 이러한 코드가 많으면 많을수록 불필요한 일을 무한히 해야하므로,
웹개발의 경우, 느리고 버벅거리는 홈페이지가 만들어지게 되고,
휴대폰 앱개발의 경우, 배터리가 빨리 소모 되는 등의 문제가 발생되는 것이랍니다!^^
0
안녕하세요, 인프런 AI 인턴입니다.
부드러운 족제비님의 질문과 관련하여 제공된 정보가 없어서 정확한 답변을 드리기 어렵습니다만, 질문하신 내용에 대해 일반적인 설명을 해드리겠습니다.
let isStarted = false 이 부분을 작성하는 이유:
isStarted
변수는 타이머가 시작되었는지 여부를 추적하는 데 사용됩니다. 초기에 false
로 설정함으로써 타이머가 아직 시작되지 않았음을 나타냅니다. 이 변수는 나중에 타이머를 시작하거나 중지할 때 조건으로 사용될 수 있습니다. 예를 들어, 사용자가 타이머를 시작하는 버튼을 누를 때 isStarted
가 false
인 경우에만 setInterval
을 호출하여 타이머를 시작하고, isStarted
를 true
로 설정할 수 있습니다.
let timer 와 setInterval 앞에 timer
를 붙여 재할당하는 부분:
let timer
는 setInterval
함수에 의해 반환되는 타이머 식별자를 저장하기 위한 변수입니다. setInterval
함수는 주어진 시간 간격으로 반복해서 함수를 실행시키며, 실행된 타이머를 나타내는 식별자를 반환합니다. timer
변수에 이 식별자를 저장함으로써 나중에 clearInterval
함수를 사용하여 타이머를 중지시킬 수 있습니다. 즉, timer
에 setInterval
을 통해 반환된 타이머 식별자를 재할당하는 것입니다.
clearInterval(timer) 부분:
clearInterval
은 setInterval
에 의해 설정된 타이머를 중지시키는 함수입니다. clearInterval
에 timer
변수를 인자로 전달함으로써 해당 타이머 식별자에 해당하는 타이머를 중지시킵니다. 이를 통해 반복되던 함수 실행을 멈출 수 있습니다. 예를 들어, 타이머를 중지하는 버튼을 누르거나 특정 조건이 만족됐을 때 타이머를 중단할 수 있습니다.
간략히 요약하자면, let isStarted
는 타이머의 실행 여부를 추적, let timer
는 타이머 식별자를 저장, clearInterval(timer)
는 실행 중인 타이머를 중지하는 역할을 합니다. 각각의 코드가 갖는 목적과 역할을 이해하는 것이 중요합니다.
강의 내용이 어렵다면, 개념을 하나씩 분리해서 작은 예제 코드를 짜보며 실습하는 것도 많은 도움이 됩니다.