javascript - 通过窗口对象引用全局变量时未定义的全局变量

标签 javascript reference window undefined

我对通过 window 全局声明变量还很陌生,所以我有点惊讶以下代码片段的行为因浏览器而异。

window.test = "Good";
document.write(window.test);
document.write('<br>');
document.write(window.test);
document.write('<br>');
document.write(test);​

Firefox、IE、Opera

Good

undefined

Good

Chrome 和 Safari

Good

Good

Good

我最初认为它应该像 Chrome 和 Safari 那样运行,但我意识到我可能没有正确理解 window 对象,所以有没有更懂行的人解释一下? p>

我意识到我可以只对那个范围使用 var test = "Good";,但我很想知道为什么浏览器会以不同的方式处理它。

http://jsfiddle.net/WHYFc/

最佳答案

您的 JSFiddle 正在使用 window.load 创建脚本。

document.write 加载后清除/删除文档,因此您看到的内容对于那些浏览器来说是正常的,而 webkit 只是更宽松

这是您在 jsfiddle 中生成的代码:

window.addEvent('load', function() {
window.test = "Good";
document.write(window.test);
document.write('<br>');
document.write(window.test);
document.write('<br>');
document.write(test);
});

将您的 fiddle 更改为头部或 body ,它将按预期工作

DEMO

关于javascript - 通过窗口对象引用全局变量时未定义的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967700/

相关文章:

swift 3/macOS : Open window on certain screen

javascript - Jquery Datatable - 日期排序不适用于月份(相对于日期的月份)

javascript - 如何在 Electron BrowserWindow 中打开 puppeteer 页面

c++ - const int& 性能问题

c++ - 解决 C++ 对临时对象的非常量引用的限制

C# - 获取应用程序构建所针对的引用 DLL 的版本(不是它在运行时引用的内容)

javascript - 在 JavaScript 中,正则表达式是否在编译代码中求值?

javascript - 三.WebGL渲染器: Unknown uniform type: 1009

python - 在linux和mac中从python查询窗口id

opengl - GLUT 叠加层有什么用处?