我希望有人可以向我解释为什么在浏览器中查看 HTML 时,下面的 JavaScript/HTML 会显示“门 #2”:
<!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
在第二个声明中覆盖 dos的行为testprint
。它没。请注意,如果我将第四个声明移动到第testprint
一个脚本块的末尾,它将被调用window.onload
。