有人可以向我解释为什么 undefined 仅在 firefox 中为 document.write 在最后一行打印。当第一个 document.write 被删除时,它工作得很好,而且它似乎只在 Firefox 中是这样的。
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
有人可以向我解释为什么 undefined 仅在 firefox 中为 document.write 在最后一行打印。当第一个 document.write 被删除时,它工作得很好,而且它似乎只在 Firefox 中是这样的。
document.write("Hello <br />");
myVar = 55;
document.write(window.myVar);
这是因为 jsfiddle。您将脚本包装在一个匿名函数中,该函数使用 mootools 的addEvent()
函数绑定到页面的 onload 事件。由于某种原因,在 onload 事件中运行代码会导致范围不在window
Firefox 中。
如果您查看页面源代码,则代码如下所示:
<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/
您正在myVar
从window
对象调用,但没有将其设置为这样。
执行以下任一操作:
window.myVar = 55;
document.write(window.myVar);
或者:
var myVar = 55;
document.write(myVar);
编辑:
window
请注意,除非您绝对需要附加到对象的变量,否则我会选择第二个选项。