Pie*_*aud 7 javascript reflection scope
在JavaScript调试器中,我可以手动检查函数的作用域链.例如,在执行foo()这段代码时:
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 ();
Run Code Online (Sandbox Code Playgroud)
并在上面设置断点console.log,我看到以下范围:

有没有办法以编程方式执行此操作?
如何检查每个范围级别的定义?
我(很)确定这是不可能的.
甚至Chrome调试器也不会始终跟踪您的范围,但只有在它遇到断点时才会跟踪.始终跟踪范围链会花费太多内存(取决于闭包和上下文的复杂性).有关详细信息,请参阅此功能请求:https:
//groups.google.com/forum/#!topic/google-chrome-developer-tools / wKEMpKjXR7s ECMA 262(10.3.1)描述了必须如何完成标识符解析,此最重要的部分是调用GetIdentifierReference (lex, name, strict)其描述在ECMA 262(10.2.1) .据我所知,ECMAScript的任何实现中都没有命令在运行时调用此函数.
然而,这个问题(或者确切地说是它的答案)可能很有趣,因为它至少更接近你所要求的.
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |