Я надеюсь, кто-то может объяснить мне, почему ниже JavaScript/HTML покажет "дверь №2", когда HTML просматривается в браузере:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function testprint() {
alert('door #1');
};
window.onload = testprint;
function testprint() {
alert('door #2');
};
testprint = function() {
alert('door #3');
};
</script>
<script type="text/javascript">
function testprint() {
alert('door #4');
};
</script>
</head>
<body>
</body>
</html>
Поскольку только объявление testprint
встречается до того, как window.onload
установлено в testprint
, я ожидаю, что window.onload
приведет к появлению "двери №1". Фактически, onload вызывает "дверь № 2". Обратите внимание, что это сделает это, если включено первое объявление testprint
.
В третьем и четвертом объявлении testprint
используются разные способы назначения функции, я попробовал это, чтобы увидеть, будет ли она переопределять поведение window.onload
в том же самом, что и второе объявление testprint
. Это не так. Обратите внимание, что если я переместил четвертое объявление testprint
в конец первого блока script, он будет вызываться window.onload
.