2015-02-19 14 views
6

Bir JavaScript hata ayıklayıcısında, bir işlevin scope chain numarasını elle denetleyebilirim. Örneğin, ne zaman bu kod parçası üzerinde foo() yürütme:JavaScript kapsam zincirini programlı olarak nasıl denetlerim?

Scope Variables seen in Chrome Debugger

bu yapmak için bazı araçlar var:

var x1 = "global"; 
var foo = (function main() { 
    var x2 = "inside obj"; 
    return function internalFoo() { 
     var x3 = "inside internalFoo"; 
     console.log (x1+','+x2+','+x3); // get the scopes 
    }; 
})(); 
foo(); 

ve console.log bir kesme noktası ayarlama, aşağıdaki kapsamları bakın programlı olarak?
Her kapsam düzeyinde neyin tanımlandığını nasıl denetleyebilirim?

cevap

5

Bunun mümkün olmadığından eminim.
Chrome hata ayıklayıcı bile kapsamınızı her zaman izlemez, ancak yalnızca bir kesme noktasına ulaştığında. Kapsam zincirini her zaman takip etmek çok fazla hafızaya mal olur (kapaklarınızın ve bağlamlarınızın karmaşıklığına bağlı olarak). Daha fazla bilgi için bu özellik isteği bakınız:

ECMA 262 (10.3.1)https://groups.google.com/forum/#!topic/google-chrome-developer-tools/wKEMpKjXR7s Tanıtıcı Çözünürlük yapılacak nasıl bu en önemli parçası ECMA 262 (10.2.1) açıklanan GetIdentifierReference (lex, name, strict) çağırmaktır açıklanır. Bildiğim kadarıyla çalışma zamanında bu işlevi çağırmak için ECMAScript'in herhangi bir uygulamasında herhangi bir komut yoktur.

this soru (veya cevabının tam olması için), en az sizin için istediğin kadar ilgi çekici olabilir.

İlgili konular