有人可以向我解释为什么在最后一行只在firefox中为document.write打印undefined。当第一个document.write被删除但是它工作得很好,而且它似乎只在Firefox中。
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
答案 0 :(得分:3)
这是因为jsfiddle。您将脚本包装在一个匿名函数中,该函数使用mootools的addEvent()
函数绑定到页面的onload事件。出于某种原因,在onload事件中运行代码会导致Firefox中的范围不是window
。
如果您查看页面源代码,代码如下所示:
<script type='text/javascript'>//<![CDATA[
window.addEvent('load', function() {
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
});//]]>
</script>
如果您在没有任何库的情况下运行相同的脚本,并且在任何情况下都无法正常运行:http://jsfiddle.net/43pbj/4/
答案 1 :(得分:0)
您是从myVar
对象调用window
,但未将其设置为此类。
要么:
window.myVar = 55;
document.write(window.myVar);
或:
var myVar = 55;
document.write(myVar);
修改强>
就像说明一样,除非你绝对需要附加到window
对象的变量,否则我会使用第二个选项。