我在 index.html 中有以下内容:
<html><body><pre>
<script src="program.js"></script>
</pre></body></html>
以及 program.js 中的以下内容:
document.writeln(JSON.stringify(name));
name = "Bob";
第一次打开 index.html,产生了(输出 A):
> ""
然后,在刷新页面后,生成(输出 B):
> "Bob"
我从来没有在 Firefox 中看到输出 B。
回到 Chrome:但是,如果我使用“name”以外的其他变量,例如“val”:
document.writeln(JSON.stringify(val));
val = "Bob";
我得到一个例外:
Uncaught ReferenceError: val is not defined
因此,由于“名称”恰好在全局范围内,我认为 Chrome 会以某种方式记住旧页面加载中的全局变量,并在新页面加载中设置这些变量的默认值。但是,如果我改用全局变量“状态”,我总是会看到输出 A。
为什么会这样?