window.setTimeout이든 window.setInterval이든 함수 이름을 호출 핸들로 사용하는 경우 매개변수를 사용할 수 없습니다. 맞춤 매개변수든 이벤트 매개변수든 매개변수를 전달하려는 경우 해결책은 이 함수를 기반으로 캡슐화 계층을 만드는 것입니다. 아직 구체적인 원리는 명확하지 않지만, 아래의 방법으로 이 문제를 해결할 수 있습니다.
간단한 코드를 먼저 보세요:
function show(){
alert("Hello World");
}
setTimeout(show,1000);
효과 이 코드는 Hello world가 1초 후에 표시되지만,
setTimeOut(show(),1000)
으로 변경하면 즉시 표시되며 지연 효과가 나타나지 않습니다. 하지만 따옴표를 추가하면 괜찮습니다. 예:
setTimeOut("show()",1000)
은 괜찮습니다. 하지만 매개변수를 가져오면 여전히 작동하지 않습니다. 예:
setTimeOut("show(name)",1000)
이때 다른 함수를 작성하는 비교 방법이 있습니다. 매개변수 없이 함수를 반환하는 함수는 다음과 같습니다.
script 언어="javascript" >
function show(name)
{alert("Hello World:" name);}
function _show(name)
{
return function()
{
show(name);
}
}
setTimeout(_show(name),1000)
🎜>