다음과 비슷한 코드가 있습니다.return 함수 내의 setInterval이 작동하지 않습니다.
function test(){
return function(){
setInterval(//Another Function Reference // ,1000);
}
}
나는 test()()를 호출하고있다.
위의 코드는 작동하지 않습니다. 누군가 제발 이유를 설명해 주시겠습니까?
다음과 비슷한 코드가 있습니다.return 함수 내의 setInterval이 작동하지 않습니다.
function test(){
return function(){
setInterval(//Another Function Reference // ,1000);
}
}
나는 test()()를 호출하고있다.
위의 코드는 작동하지 않습니다. 누군가 제발 이유를 설명해 주시겠습니까?
: 나는 당신이 그렇게 자기의 호출 기능을 할 test()
를 원하는 것으로 가정
function test(){
return function(){
setInterval(function(){
alert("Hello");
},1000);
}
}
test()();
을
var test = (function(){
return function(){
setInterval(function(){
alert("Hello");
},1000);
}
})();
test();
: 리턴 기능을 할 수 있도록하는 대신 한 번 설정 0
왜 downvote? –
function test(){
return function(){
setInterval(function(){
alert("Hello");
},1000);
}
}
var hello = test();
hello();
잘 작동하는 것 같습니다. test()
으로 전화를 걸면 함수가 반환되지만 실행하지 않은 것입니다. 실행하려면 결과 함수를 호출해야합니다. 다음 중 한 가지 방법으로이 작업을 수행 할 수 있습니다
test()();
또는를 : 코드 1에는 폐쇄가 없습니다
var myFunction = test();
myFunction();
. test
은 함수 객체를 반환하지만 [함수]는 실행되지 않습니다. 스 니펫에서 내부 함수에는 3 개의 클로저가 사용되고 반환 된 함수 객체는 변수에 할당되고 실행됩니다. 함수 오브젝트를 리턴 할 때의 이점은이를 다른 값에 지정하여 별도로 실행할 수 있다는 것입니다. 질문의
1 이전 버전
// startInterval: interval 1 second, message: 'Hello' (default)
var startInterval = test(null, 1000);
// anotherInterval: interval 5 seconds, message: ''Hello to you too''
var anotherInterval = test('<i>Hello to you too</i>', 5000);
// execute the function objects
startInterval();
anotherInterval();
// [hithere], [time] and [result] are closed over
function test(hithere, time){
hithere = hithere || 'Hello';
time = time || 1000;
var result = document.querySelector('#result');
return function(){
setInterval(function(){
result.innerHTML += hithere+'<br>';
},time || 1000);
}
}
<div id="result">Greetings!<hr></div>
bind
상황에 당신의 내면의 기능을 '폐쇄를 작동하지 않는'언급 한 문제가있을 때 설정하는 것이 인터벌이 마침내 실행되고있는 것은 글로벌 범위에 있고 당신이 그것을 호출 한 곳이 아닙니다. 다음과 같이 수정할 수 있습니다.
function test(){
return function(){
setInterval(/*Another Function Reference */ ,1000);
}.bind(this)
}
이것은 작동하지 않습니다 :'setInterval()'의 반환 값에'.bind()'를 호출하려고합니다. 이것은 id가 아닌 함수입니다. – nnnnnn
감사합니다. 나는 내 실수를 이해했다. 포인터 대신 함수 자체를 전달하고있었습니다.
무엇을 기대합니까? – neelsg
여기에 폐쇄가 없습니다. – KooiInc
수정 전의 코드 *가 제대로 작동하는 것처럼 보입니다. 편집 후 * 코드는 그 주석이 포함 된 실제 코드가 아니므로 실제 * 코드의 문제점을 어떻게 추측 할 수 있습니까? 자리 표시 자 주석없이 해당 행을 표시하십시오. 브라우저의 개발 콘솔에 오류가 있습니까? – nnnnnn