>웹 프론트엔드 >JS 튜토리얼 >window.setTimeout()&window.setInterval() 사용법과 매개변수 전달 방법에 대한 자세한 설명! _자바스크립트 기술

window.setTimeout()&window.setInterval() 사용법과 매개변수 전달 방법에 대한 자세한 설명! _자바스크립트 기술

WBOY
WBOY원래의
2016-05-16 19:07:441117검색

JScript를 사용할 때 웹 페이지 UI 애니메이션 효과 등을 생성하는 등 간격을 두고 메서드를 실행해야 하는 경우가 있습니다. 이것은 우리가 setInterval이나 setTimeout을 자주 사용하는 방법이지만, 이 두 가지 방법은 스크립트 호스트에 의해 시뮬레이션되는 Timer 스레드이기 때문에 우리의 방법을 호출할 때 매개변수가 이들에 전달될 수 없습니다.

일반적인 사용 시나리오는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

window.setTimeout("delayRun()", n);
window.setInterval("intervalRun()", n)
window.setTimeout(delayRun, n); window.setInterval(intervalRun, n);

당연히 대체 매개변수를 호출해야 합니다. window.setTimeout("delayRun(param)", n)

코드 복사 코드는 다음과 같습니다.
window.setInterval("intervalRun(param)", n); setTimeout(delayRun(param) , n);
window.setInterval(intervalRun(param), n);


은 문자열 리터럴 형식으로 메서드를 호출할 때 param 전역 변수(예: 창 개체 변수)여야 하며 함수 포인터 형식의 호출은 완전히 잘못된 것입니다. 이는 함수의 반환 값을 setTimeout/setInterval 함수의 매개 변수로 처리하는 것입니다. 모두.

이 문제에 대한 해결책은 다음 시나리오에서 수행하는 것입니다.


function foo()
{
var param = 100;
window.setInterval(function()
{
IntervalRun( param);
}, 888);
}

function InternalRun(times)
{
// todo: 시간 매개변수에 따라 다름
}

이 방법을 사용하면 더 이상 전역 변수에 의존하여 매개 변수를 DelayRun/intervalRun 함수에 전달할 수 없습니다. 결국 페이지에 전역 변수가 너무 많으면 개발, 디버깅에 큰 어려움을 겪게 됩니다. 그리고 스크립트 관리.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.