Mozilla開発者のJavascriptチュートリアルに従っており、変数ホスティングのセグメントがあります。このチュートリアルでは、FirefoxのScratchpadを使用してJavaScriptを編集し、コードを素早く保存して表示する方法について説明します。Javascript変数がスクラッチパッドで期待通りに動作しない
iは(チュートリアルからコピーペースト)を使用したコードは次のとおり
/**
* Example 1
*/
console.log(x === undefined); // true
var x = 3;
/**
* Example 2
*/
// will return a value of undefined
var myvar = 'my value';
(function() {
console.log(myvar); // undefined
var myvar = 'local value';
})();
しかしconsole.log(x === undefined)
戻るfalse
。代わりにconsole.log(x);
を実行すると、実際には3
が返されます。 console.log(myvar);
は、期待どおりに未定義を返します。
ここで起きているはずのものが混乱している、ドキュメントが間違っている/古くなっている、あるいはScratchpadがこのコードを標準のJavaScriptと違って解釈していますか? .jsファイルで実行しようとしましたが、期待どおりの結果が得られました。即時機能で
コンソールは現在のページのグローバルスコープ( 'window')を暗黙的に使用するので、' x'を定義すると、定義されたままになります。すぐに実行される大きな関数にすべてのコードをラップして、きれいなコンテキストで始めることができます。 – Pointy
サンプルコードを2回実行しましたか?そして、 'x'は2回目以降の実行で既に' 3'で初期化されています。 – Bergi
しかし、なぜコードを再実行すると前の変数が保存されるのでしょうか? .jsスクリプトが再び実行されているときに 'メモリ'が消去されないのでしょうか?または、これはページの完全な更新中にのみ発生しますか? – Beep