JavaScript는 의심할 여지 없이 해석되는 언어이지만 런타임 시 문장별로 위에서 아래로만 구문 분석됩니까?
(1) JavaScript가 런타임 시 위에서 아래로만 구문 분석되는 경우 먼저 함수를 정의한 다음 호출하기 때문에 다음 코드가 올바르게 실행될 수 있다는 것을 이해할 수 있습니다.
function showMsg() { alert('This is message'); } showMsg(); // This is message
(2) 코드를 호출한 후에 함수를 정의할 수 있다는 것도 알고 있으며, 다음 코드도 정상적으로 작동할 수 있습니다. showMsg()가 호출될 때 showMsg()가 아직 정의되지 않은 것 같지만 정상적으로 작동하며 이는 JavaScript가 "사전 구문 분석"되었음을 나타냅니다. showMsg(); // This is message
function showMsg()
{
alert('This is message');
}
의 또 다른 예입니다. 다음 예제를 실행하면, 첫 번째 문장의 msg가 정의되었지만 초기화되지 않았음을 나타내는 undefed가 팝업됩니다. var msg; 아래 두 번째 문장에
코멘트를 달면 "msg is not Defined" 오류가 보고됩니다. 이는 또한 JavaScript가 "사전 구문 분석"되었음을 나타냅니다.alert(msg); //undefined var msg='This is message';
showMsg(); // This is message 2 function showMsg() { alert('This is message 1'); } showMsg(); // This is message 2 function showMsg() { alert('This is message 2'); }
function showMsg() { var msg='This is message'; } alert(msg); // msg未定义