2016-08-08 8 views
0

グローバルスコープからアクセス可能にされていない限り、IIFEの内部変数にプログラムでアクセスしていないことを認識しています。デベロッパーツールからIIFE変数にアクセスする

たとえば

(function() { 
    var a = "Hello"; // a isn't accessible from the outer scope 
)(); 

console.log(a); // a is undefined 

しかし:

(function() { 
    var a = "Hello"; 
    global.a = a; 
)(); 

console.log(a); // Displays "Hello" 

いくつかのケースでは、生命維持、またはページ閲覧の全期間中に数秒間実行し続けることは可能です通常はJavaScriptで書かれたゲームの場合、IIFEにゲームループが含まれます。

したがって、IIFE内で宣言されたすべての変数および関数は、ブラウザのメモリに存在する必要がありますが、カプセル化のために開発者コンソールから表示することはできません。

私の質問は、実行中にコードを以前に変更しなくても、それらを表示または操作できる方法はありますか?それらの変数はメモリに存在し、使用されているのでおそらく、ある種のデバッグを通して?

私の質問は主にFirefoxとChrome(Firebugと開発者用ツール)ですが、それを実行する一般的な方法がある場合でもうまくいきます。

答えて

5

、将来実行される予定のコード行。

ブレークポイントがヒットすると、コンソールはそのスコープになります。

(function() { 
 
    document.querySelector("button").addEventListener("click", myFunction); 
 

 
    var a = 1; 
 
    
 
    function myFunction (ev) { 
 
    debugger; // You could also add this breakpoint using the Dev Tools UI 
 
    console.log("A is ", a); 
 
    } 
 
})();
<button>Button</button>

+0

これは私が変数を編集(およびコード編集した値を使用しての残りの部分を持っている)することができますか? – pie3636

+0

はい。 (そして、コメントの長さが最小であるので、答えのデモでそれをチェックするのに10秒かかりました)。 – Quentin

+0

ありがとう、シンプルで働きました。 (私はそのデモでチェックしようとしたが、コードを見つけることはできなかった) – pie3636

関連する問題