7
저는 항상 브라우저가 문자열에 의해 위에서 아래로 문자열에서 JavaScript 코드를 실행한다고 생각해 왔습니다.JavaScript는 정확히 어떻게 해석됩니까?
이// 완벽
<script>
test();
function test() { alert('test'); }
</script>
작동하지만 변수로 함수를 선언하면 그것은 실패 : 그러나 분명히 여기 그렇지 않다 'catch되지 않은 ReferenceError가 : 테스트가 정의되지 않은'
<script>
test();
var test = function() { alert('test'); }
</script>
그래서 자바 스크립트 엔진은 때때로 위에서 아래로 코드를 실행하지 않습니다. 결국 어떻게 선언 되더라도 기능을 미리로드 할 수 있습니다. 정확히 작동하며 이유는 무엇입니까?
필자는 function() {}이 스코프 상단으로 이동하는 특별한 경우라고 생각합니다. 나는 틀릴 수 있었다. –
* [AST] (http://en.wikipedia.org/wiki/Abstract_syntax_tree)와 같은 것으로 실행되기 전에 완전히 구문 분석됩니다. 이 때문에 소스 아래쪽의 줄에 "구문 오류"가 표시됩니다. – Matt
위로 대답을보십시오 : http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname – viper