Mic*_*iot 6 javascript window reference undefined
我通过窗口全局声明变量是相当新的,所以我有点惊讶,以下代码段的行为取决于浏览器.
window.test = "Good";
document.write(window.test);
document.write('<br>');
document.write(window.test);
document.write('<br>');
document.write(test);?
Run Code Online (Sandbox Code Playgroud)
Firefox,IE,Opera
好
未定义
好
Chrome和Safari
好
好
好
我最初的信念是它应该像Chrome和Safari那样表现,但我意识到我可能没有正确理解窗口对象,那么更有知识的人会解释这个吗?
我意识到我可以只使用var test = "Good";该范围,但我对浏览器为何以不同方式处理它感兴趣.
您的 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);
});
Run Code Online (Sandbox Code Playgroud)
将您的小提琴更改为头部或身体,它将按预期工作