setTimeout을 사용할 때 메소드가 즉시 실행되는 이유는 무엇입니까?
이 질문에 이미 답변이 있습니다.
- setTimeout () 6 답변으로 함수 호출
를 사용하여 간단한 코드를 작성 setTimeout
하지만 setTimeout
예상 시간을 기다리지 않고 코드가 즉시 실행됩니다. 내가 도대체 뭘 잘못하고있는 겁니까?
setTimeout(testfunction(), 2000);
함수를 즉시 호출하고 반환 값을 예약합니다.
사용하다 :
setTimeout(testFunction, 2000);
^
고시 : 괄호 없음.
괄호 제거
setTimeout(testfunction(), 2000);
함수에 매개 변수를 보내려면 원하는 함수를 호출 할 익명 함수를 만들 수 있습니다.
setTimeout(function() {
testfunction('hello');
}, 2000);
편집하다
setTimeout의 첫 번째 제안 변수는 누군가를 보내도록 제안했습니다. 나는 선호하는 것이지 말고 setTimeout 첫 번째 선호하는 변수로 보내지 않는 것이 좋습니다. eval 함수가 사용되기 때문입니다. 이것은 나쁜 습관이며 피해야합니다.
testfunction 이름 뒤의 괄호를 제거합니다.
setTimeout(testfunction, 2000);
그 이유는 setTimeout의 첫 번째 인수가 함수 의 반환 값이 아니라 함수 참조 집 하기 때문 입니다. 코드에서는 testfunction
즉시 호출되고 반환 값은 setTimeout으로 전송됩니다.
글쎄, 당신은 답을 얻었을 가능성이 있습니다. 필요한 시간 후에 함수를 호출 할 수있는 두 가지 방법이 있습니다.
1. setTimeout ( "FUNC_NAME () ', TIME_IN_MS);
여기서 큰 따옴표 안의 FUNC_NAME은 TIME_IN_MS 밀리 초 후에 호출하려는 함수입니다. 따옴표를 넣지 언어 자바 펼쳐가 해석되는 동안 함수가 즉시 실행되고 당신의 목적은 실패 할
2. setTimeout (function () {FUNC_NAME ()}, TIME_IN_MS); 여기서 인터프리터가 문장을 건너 뛰고 실행 가능하게 여기에 따옴표를 넣어야합니다.
시간을 평가하는 대신 일정 시간 후에 생성됩니다.
감사합니다 shaILU
'ProgramingTip' 카테고리의 다른 글
자바 펼쳐의 날짜 구문 분석이 Safari와 Chrome에서 발행됩니다. (0) | 2020.12.14 |
---|---|
Json.NET에서 키 목록을 얻으려면 어떻게해야합니까? (0) | 2020.12.14 |
각 열 이름에 접미사 (또는 접두사)를 추가하는 방법은 무엇입니까? (0) | 2020.12.13 |
미리보기없이 카메라에서 사진 찍기 (0) | 2020.12.13 |
FULL JOIN과 INNER JOIN의 차이점 (0) | 2020.12.13 |