<html>
<head>
<script type='text/javascript'>
alert(name);
function init() {
name = parseInt(name) +1; // name is a local variable created by init
function displayName() { // displayName() is the inner function, a closure
alert (name); // displayName() uses variable declared in the parent function
}
displayName();
}
init();
</script>
</head>
<body>
Some Text
</body>
</html>
これは私の単純な JavaScript コードです。上記のコードをコピーして貼り付け、何度も更新して奇妙な出力を確認しました。
ページを更新するたびに、name 変数が 1 ずつ増えていることがわかります。
最初のロード: アラート ' ' および 1
2 番目のロード: アラート 1 および 11
3 番目のロード: アラート 11 および 111
など ...
ウィンドウまたはタブを閉じてからリロードすると、正しく動作しているように見えます。ただし、同じウィンドウまたはタブで 2 回目のリロードを行うと、上記と同じ出力が得られます。
私の質問は次のとおりです。なぜ、どのように変数name
を更新した後でも、また複数の更新 (F5またはCtrl+ Shift+ R) を使用できるのですか?