窗口对象上的javascript函数在被调用时会替换该窗口的内容吗? (有时??)

由于这里不应该枚举的原因,我发现将函数附加到窗口对象可能是有用的。但是,我发现了相当奇怪的行为。
<html><head><script>
function sideEffect() { console.log("Side effect happened. Wewt."); }
window.foo = function() {
    sideEffect();
    return true;
}
window.bar = function() {
    sideEffect();
}
</script></head>
<body>
<a href="javascript:window.foo();">Replaces entire window with "true"</a>
<br />
<a href="javascript:window.bar();">Doesn't</a>
</body></html>
为什么调用具有返回值的函数决定替换窗口的内容?这种情况发生在Firefox和Opera中,但不适用于IE9,Chrome或Safari(均在Win7上测试过)。 所以问题是:是否有某种文档指定了这种行为? 或者这是FF / Opera中的(已知)错误? [编辑]有趣的是(根据回答和评论),似乎滥用
window
对象是一个红鲱鱼。     
已邀请:
您的代码运行正常 - 浏览器正在完成您要告诉它的操作。 JavaScript行在Web浏览器的URL栏中有效,浏览器将立即执行它们。 (尝试一下:在URL栏中写一个警告框,点击回车,看看会发生什么。)通过将JavaScript写入锚标签的
href
,您可以设置浏览器的位置(换句话说,URL)到那一行JavaScript。因为你的一个函数返回一个值,所以该文件被该值覆盖;这是正常的浏览器行为。     
你打电话后再打
void(0);
<a href="javascript:window.foo();void(0);">
如果它仍然这样做(我认为不会),添加一个`||假':
<a href="javascript:window.foo()||0;void(0);">
而忽略了“不要那样做”的评论 - 你所做的事情没有任何问题,但是所有的ѭ6都是没有意义的(无论如何,一切都在
window
)     
好吧,无论如何使用“javascript:”这样的网页真的很糟糕。如果绝对必须以这种方式绑定事件处理程序,或者(更好)使用不显眼的代码来创建“onclick”属性。 这种行为很古老;自古以来,这样做的浏览器一直表现得那么好。     

要回复问题请先登录注册