두 번째 함수 호출 (함수 본문 뒤에 오는)이 본문 내부의 우선 순위보다 우선 순위가 높은 이유를 모르겠습니다.자바 스크립트의 함수 실행 우선 순위
function a(){
var num = 5;
console.log(++num);
setTimeout(a, 100);
};
setTimeout(a,2000)
두 번째 함수 호출 (함수 본문 뒤에 오는)이 본문 내부의 우선 순위보다 우선 순위가 높은 이유를 모르겠습니다.자바 스크립트의 함수 실행 우선 순위
function a(){
var num = 5;
console.log(++num);
setTimeout(a, 100);
};
setTimeout(a,2000)
:가 호출 될 때 setTimeout(a,2000)
:없이
이 기능 a
를 정의하면 a
을 예약하는
2 초 후에 호출 할를 호출
가 호출 될 때, 내 코드는 기본적으로 2 초 100 밀리 초 인용
후 호출을위한 그 자체를 일정 후 100 밀리 초와 a
가 [*] 일시 정지 행한다. ,
setTimeout(a, 2000);
setTimeout(b, 100);
음, 가장 가능성이 b
가 제 1 및 제 2 라인 사이에 예상치 못한 일시 정지가없는 가정 (먼저 호출됩니다
그러나 다음과 같은 상황에서 우선 순위가 무엇인지 물어 당신의 상황에 의해 판단 예 : 전체 OS 성능 문제로 인해). 같은 시간 제한을 사용하는 경우
은 :
setTimeout(a, 100);
setTimeout(b, 100);
a
은 대부분 먼저 호출됩니다. 그러나 나는이 보장된다 생각하고 JS 엔진에 의존하지 않는
[*] 당신은 유사한 을 달성 할 수있다 (예정된 일정에 대한 엄격한 FIFO 목록을 사용하는지 여부, 내부 클럭 해상도 등 무엇인가) setInterval()
을 사용하여 동작.
+1 할 것이지만'setInterval' 부분을 생략 해주십시오. 여기서는 할 일이 거의없고 회전 목마를 혼란스럽게 할 수 있습니다. – MaxArt
@MaxArt : 작은 노트로 이동했습니다. 나는 그것이 혼란 스럽다고 생각하지 않지만, 그것이 대본과 아주 관련이 없다는데 동의한다. –
방금 정의 된 함수 a
이 정의되지 않았습니다. 실제로 실행되는 코드 조각은 a
이고, 그 다음은 setTimeout(a,2000)
입니다. 연대순으로
나는
function a() {
var num = 5;
console.log(++num);
setTimeout(a, 100);
};
는 함수 본문 생각이 후 우리는 요구하고있다. 나는 그것이 계층 구조 문제라고 생각하지 않는다.
어떤 행동을 기대합니까? – Sirko
"function a() {...}();"라고 써야 했습니까? (최종 괄호에 유의하십시오)? 코드는 최종 행 전에 함수를 호출하지 않습니다. – tsiki
한 통화가 다른 통화를 기다리는 이유를 알고 싶습니다. 그러면 행동을 예측할 수 있습니다. – carousel