私は 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 に戻ります: ただし、「val」などの「name」以外の変数を使用する場合:
document.writeln(JSON.stringify(val));
val = "Bob";
例外があります:
Uncaught ReferenceError: val is not defined
したがって、'name' はたまたまグローバル スコープにあるため、Chrome は古いページの読み込みからグローバル変数を何らかの形で記憶し、新しいページの読み込みでそれらの変数のデフォルト値を設定していると考えました。しかし、代わりにグローバル変数「ステータス」を使用すると、常に出力 A が表示されます。
なぜこうなった?