문제:
다음 JavaScript 예제가 실행되지 않는 이유는 무엇입니까?
<code class="javascript">(function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })();</code>
다른 유사한 예는 의도한 대로 작동하지만:
<code class="javascript">(function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); (function() { setTimeout(function() { someFunction4(); }, 10); function someFunction4() { alert('here4'); } })();</code>
해결책:
문제는 함수 선언과 함수 선언 간의 평가 순서에 있습니다. 함수 표현식.
함수 선언과 표현식
평가 순서
JavaScript 코드는 두 가지 처리 단계를 거칩니다.
예제 분석
예제 1:
예제 2, 3, 4:
추가 설명
위 내용은 변수가 선언되기 전에 변수에 할당된 함수 표현식을 사용하면 `setTimeout`이 실행되지 않지만 함수 선언에서는 성공하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!