2016-12-09 4 views
-2

저는 초보자입니다. 이 자바 스크립트 이상한 것은 내가 바보가 된 기분자바 스크립트에서 간격을 설정

//First statement 
var myVar = "Hello"; 
function hello() { 
    document.getElementById("demo").innerHTML = myVar; 
} 

//second statement 
var myVar = setInterval(myTimer, 1000); 
function myTimer() { 
    document.getElementById("demo").innerHTML = new Date().toLocaleTimeString(); 
} 

두 번째 기능 작업없이 호출 이유는 무엇입니까? 첫 번째와 달리? 이것은 나에게 많은 문제를 일으켰다!

+0

'myTimer' 함수를'setInterval'에 전달하고 있습니다. 'setInterval'은 1000ms마다 함수를 호출합니다. 그래서 함수를 직접 호출하는 것은 여러분이 아니지만 여전히 호출됩니다. –

+1

여기에 호출합니다 :'var myVar = setInterval (myTimer, 1000); ' –

+0

실제로는 역수입니다. 두 번째 기능을 호출하고 있지만 첫 번째 기능은 호출하지 않습니다. – Chris

답변

2

왜 두 번째 기능이 호출되지 않고 작동합니까? 첫 번째와 달리?

myTimersetInterval으로 전달하고 있습니다. setInterval은 1000ms마다 함수를 호출합니다. 따라서 이 아니지만 직접 함수를 호출하는 사람은이며 여전히 호출됩니다 (setInterval). setInterval의 목적은 인수로 전달하는 함수를 호출하는 것입니다.

대조적으로 hello으로는 아무 것도하지 않습니다. 당신은 그것을 직접적으로 호출하지 않으며 호출 할 수있는 다른 함수에 전달하지도 않습니다.

1

의견에서 수집 할 수있는 내용을 보면 myTimer() 기능이 왜 작동하는지 혼동하는 것 같습니다.

이 줄

var myVar = setInterval(myTimer, 1000); 

당신이 setInterval() 함수를 호출하는 경우 : 여기에 대한 간략한 설명입니다. 이 함수는 정의한 2 개의 매개 변수를 사용합니다. 첫 번째는 함수입니다. 실행되는 코드 두 번째는 상기 함수의 각 실행 사이의 지연이다.

다음 줄에서 myTimer 변수는 setInterval으로 실행되는 함수로 선언했습니다.

자세한 내용은 MDN documentation을 참조하십시오. 구체적으로 말한다

FUNC : 모든 지연 (밀리 초)을 실행하는 함수

var intervalID = window.setInterval(func, delay)

파라미터는 다음과 같이 정의된다.

지연 : 시간을 밀리 초 (천분)는, 타이머는 특정 함수 또는 코드의 실행 사이의 지연한다.

+0

예, 이것은 제 질문의 일부입니다 – AmrElgendy

+0

이제 모든 것을 이해했습니다. 감사합니다. – AmrElgendy

+0

@AmrElgendy, nice. 내가 도울 수있어서 기뻐. – Chris