해결된 질문
작성
·
188
·
수정됨
0
let isStarted = false;
let auth = () => {
if(isStarted === false){
// 타이머가 작동중이 아닐때 타이머가 동작하게 함
isStarted = true
document.getElementById("finish").disabled = false
const token = String(Math.floor(Math.random() * 1000000)).padStart(6,"0")
document.getElementById("target").innerText = token
document.getElementById("target").style.color= "#" + token
let time = 180
let timer
timer = setInterval(function() {
if(time >= 0 ){
let min = Math.floor( time / 60 )
let sec = String (time % 60).padStart(2,"0")
// console.log(min + ":" + sec)
document.getElementById("timer").innerText= min + ":" + sec
time = time - 1
} else {
document.getElementById("finish").disabled=true
isStarted = false
clearInterval(timer)
}
},1000)
} else {
// 타이머가 작동중일때
}
}
let isStarted를 False로 주고
auth함수 안에 if문에서 isStarted가 False 일때
1.isStarted에 아무것도 할당 안하면 else문으로 넘어가지않는다.
2.처음에 isStarted에 true를 할당하고 마지막에 false를 할당한다
if문 부분에 설명이
모든게 낯선 제 머리로는 이 로직이 이해가 안되네요 ㅠㅠ
왜 true를 줬는지 ture를 주면 어떤일이 일어나는지
아무것도 안줬을때는 어떤일이 일어나는지 조금 더 자세한 설명 부탁드립니닷.
확실히 javascript파트는 어렵습니다.ㅠㅠㅠ
답변 1
1
안녕하세요! 현욱님!
if문은 else문과 짝꿍이에요!
if() 에서 괄호 안의 내용이 참이면 바로 다음에 오는 중괄호{ } 가 실행됩니다.
반대로, 거짓이면? else { } 이 부분이 실행되는거예요!
따라서 맨 처음에 isStarted 라는 변수에 false를 넣어 놓았으니, auth() 라는 함수가 실행됐을때 if(isStarted===false) 는 참이겠죠?! 따라서 바로 다음에 오는 중괄호 { } 부분이 실행되고 else{ } 는 실행되지 않았던 거예요!
다음으로 바로 아랫줄에서 isStarted에 true를 넣은 이유는, 이제 막 타이머를 실행시켰기 때문에 이 타이머가 끝나기 전까지는 더이상 또 다른 새 타이머를 안킬려고 그런거예요!
그래서 isStarted에 true를 넣었고, 그러니 다음에 auth() 라는 똑같은 함수가 다시 실행되더라도 if() 문은 이번엔 거짓이니까 새 타이머는 켜지지 않겠죠?!
여기까지 이해가 되셨다면 마지막에 왜 isStarted에 false를 넣었는지 한 번 스스로 고민해서 풀어보세요! 할 수 있어요!
와우 제 질문을 완벽히 이해하셨군요. 감사합니다