Faltando ponto-e-vírgula no JavaScript, causando o erro “'foo' não está definido” no IE9

Acabei de passar cerca de quatro horas rastreando esse problema. Eu sei o que está causando isso, mas não sei por que e o "por que" está me incomodand

Tenho o seguinte arquivo .js:

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

Também tenho a seguinte página 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>

Quando carrego a página no IE9, recebo um erro que "'funcA' é indefinido". Para me livrar do erro em tempo de execução, façaalgué da seguinte

Ativando a exibição de compatibilidade no IE9Removendo o DOCTYPE da páginaAdicionando um ponto-e-vírgula após o tempo e antes do retorno no JavaScript (ou seja, while (1 = 1); return 0)

Alguém pode me ajudar a entender o que exatamente está acontecendo aqu

questionAnswers(2)

yourAnswerToTheQuestion