【发布时间】:2012-10-19 05:04:44
【问题描述】:
我对通过 window 全局声明变量还很陌生,所以我有点惊讶以下 sn-p 的行为因浏览器而异。
window.test = "Good";
document.write(window.test);
document.write('<br>');
document.write(window.test);
document.write('<br>');
document.write(test);
Firefox、IE、Opera
不错
未定义
不错
Chrome 和 Safari
不错
不错
不错
我最初的想法是它应该像 Chrome 和 Safari 那样运行,但我意识到我可能对 window 对象没有正确的理解,那么有谁更有知识可以解释一下吗?
我意识到我可以将var test = "Good"; 用于该范围,但我对为什么浏览器处理它的方式不同感兴趣。
【问题讨论】:
-
其他要测试的东西是使用
window["test"]代替window.test,但我确信这些结果会相同。 -
第三次使用
window.test会怎样? -
我测试了
window["test"],但结果是一样的。在第一次以外的任何时间使用window.test都会返回undefined。 -
我对通过窗口全局声明变量还很陌生 -> 你最好保持这种状态。 yuiblog.com/blog/2006/06/01/global-domination
-
这是因为您在文档加载后使用
document.write()。您的小提琴设置为运行代码onload,但如果您在此之前运行代码,FF 会给您“很好很好”:jsfiddle.net/WHYFc/2 或者如果您运行onload但不要使用document.write():@ 987654324@(请注意,jsfiddle 默认将您的 JS 代码放在onload处理程序中;您可以通过左侧的下拉菜单进行更改)。document.write()几乎总是错误的选择...
标签: javascript reference window undefined