"setTimeout"기능으로 놀고있었습니다. 이 코드는 예상대로 실행됩니다 :setTimeout (myFunction, 5000); 대 setTimeout (myFunction(), 5000);
function myFunction() {
console.log('test');
setTimeout(myFunction, 1000);
}
myFunction();
콘솔에 매 초 '테스트'가 인쇄됩니다.
그러나이 코드 타임 아웃이 기다리고되지 실행할 때 :
function myFunction() {
console.log('test');
setTimeout(myFunction(), 1000);
}
myFunction();
을 그리고 그것은 '테스트'내 콘솔을 스팸 메일.
유일한 차이점은 myFunction() 호출의 대괄호입니다. 왜 이런 일이 일어나는 걸까요? 괄호를 포함하여 당신이 기능을 실행하고 setTimeout
에 그 결과을 통과 사실이기 때문이다
두 번째 버전은 'myFunction()'이 함수를 반환하는 경우에만 의미가 있습니다. – ftor
또는 유효 함수 invokation으로 평가 될 수있는 문자열을 반환합니다 :'const f =() => "console.log (123)"; setTimeout (f(), 1000); – ftor