ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Javascript 실행 순서
    카테고리 없음 2007. 1. 24. 14:59
    javascript를 사용해 보기전에 많이 궁금했던게 있다. 여기저기 script tag 들이 들어가면 그 실행순서는 어떻게 될까.. 였다.

    그래서 다음의 테스트를 해 보았다.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <HTML>
        <script language="JavaScript" type="text/javascript">
            <!--
            document.write("before head<br/>")
            -->
        </script>
        <HEAD>
            <title>js test</title>
            <script language="JavaScript" type="text/javascript" src="module1.js"></script>
            <script language="JavaScript" type="text/javascript">
                <!--
                document.write("in head<br/>")
                -->
            </script>
            <script language="JavaScript" type="text/javascript" src="module2.js"></script>
        </HEAD>
        <BODY>
            <script language="JavaScript" type="text/javascript">
                <!--
                document.write(
                "<script language=\"JavaScript\" type=\"text/javascript\" src=\"module4.js\"></script>")
                -->
            </script>
            <script language="JavaScript" type="text/javascript">
                <!--
                document.write("in body1<br/>")
                -->
            </script>
            <script language="JavaScript" type="text/javascript" src="module3.js"></script>
            BODY Contents.<br/>
            <script language="JavaScript" type="text/javascript">
                <!--
                document.write("in body2<br/>")
                -->
            </script>
        </BODY>
    </HTML>
    
    
    module[1,2,3,4].js의 내용은 각각
    document.write("module [1,2,3,4]>br/<");
    
    이다. 이때 결과는?
    before head
    module 1
    in head
    module 2
    module 4
    in body1
    module 3
    BODY Contents.
    in body2
    
    이다. 너무도 당연하게 script가 있는 순서대로 수행되었다. 심지어는 document.write()로 적어 놓은 script조차도 그 시점에 실행되었다. 그리고 "BOCY Contents." 를 보면 알겠지만, html 문서상의 text에 대한 evaluation과 병행되어 처리된다.

    ECMAScript 스펙 어딘가에 적혀 있긴 하겠지만... 찾아보기 귀찮아서 예제를 돌려 보았다. Safari와 opera, FireFox에서 위와 같은 결과가 나왔으니.. 다 저 순서로 evaluation한다고 보면 되겠지...

    댓글

Designed by Tistory.