>웹 프론트엔드 >JS 튜토리얼 >JS_javascript 스킬에서 setInterval 및 setTimeout이 매개변수가 있는 함수를 전달할 수 없는 문제 해결

JS_javascript 스킬에서 setInterval 및 setTimeout이 매개변수가 있는 함수를 전달할 수 없는 문제 해결

WBOY
WBOY원래의
2016-05-16 17:35:031150검색

JS에서는 setTimeout이든 setInterval이든 함수 이름을 호출 핸들로 사용할 때 매개변수를 취할 수 없습니다.
이를 해결하는 방법이 필요합니다.
1. 문자열 형식 사용: - (결함) 매개변수를 주기적으로 변경할 수 없습니다.
setInterval("foo(id)",1000)
2. 익명 함수 패키징(권장)

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

window.setInterval(function()
{
foo (id);
}, 1000);

이렇게 하면 foo(id) 함수가 주기적으로 실행되고 변수 id가 전달됩니다.
3. 매개변수 없이 반환 함수의 기능
코드 복사 코드는 다음과 같습니다.

function foo( id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id); 🎜>}
}
window.setInterval(_foo(id),1000);

여기서 _foo 함수는 매개변수를 받고 매개변수 없이 함수를 반환하도록 정의됩니다. 외부 함수의 매개변수는 함수 내부에서 사용되므로 호출 시 매개변수를 사용할 필요가 없습니다.
window.setInterval 함수에서 _foo(id)를 사용하여 매개변수 없이 함수 핸들을 반환함으로써 매개변수 전달 함수를 구현합니다.
4. setInterval 수정

코드 복사 코드는 다음과 같습니다.
function foo (id)
{
alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = 배열 ​​.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args)
}
_sto(_cb ,timeout) ;
}
window.setInterval(hello,3000,userName);

위의 모든 메소드는 setTimeout에도 적합합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.