Какое поведение IE является правильным, поведение с включенным или выключенным режимом совместимости? И почему присутствует DOCTYPE или нет?

сто потратил около четырех часов на решение этой проблемы. Я знаю, что вызывает это, но не знаю, почему и «почему» беспокоит меня.

У меня есть следующий файл .js:

function funcA() {
}
function funcB() {
    do {
    } while (1 == 1) return 0
}

У меня также есть следующая HTML-страница:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title></title>
    <script src="JScript1.js" type="text/javascript"></script>
</head>
<body>
    <script type="text/javascript">
        new funcA();
    </script>
</body>
</html>

Когда я загружаю страницу в IE9, я получаю сообщение об ошибке «funcA не определено». Я могу избавиться от ошибки во время выполнения, сделавкто угодно&nbsp;из следующих:

Включение представления совместимости в IE9Удаление DOCTYPE со страницыДобавление точки с запятой после while и перед возвратом в JavaScript (т. Е. While (1 = 1); return 0)

Может кто-нибудь помочь мне понять, что именно здесь происходит?