我希望能够获得当前范围内所有变量的列表。我知道这可能是不可能的(例如1,2,3但它对于简化我目前正在处理的节点/浏览器库的解析算法非常有帮助
一件事:它不需要打印或安全“缩小”。
我想通过读取JS库并动态地eval
来找出引入了哪些变量,找到两者之间的状态差异。我知道这种方法听起来很糟糕在纸上(我很熟悉eval的仇恨),但如果有更好的方法来找到这个而不仅仅是解析整个库(这对于除了C /等以外的任何语言。),我都是耳朵。
对于你在公然使用eval
时哭泣,我知道使用闭包来保护父范围不被修改。如果它在浏览器环境中(暂时更改一些DOM构造函数),我也将能够阻止对eval中浏览器显示的更改。
答案 0 :(得分:3)
是和否。 "否"在几乎所有情况下。 "是"但是,如果要检查全局范围,则只能以有限的方式进行。请看以下示例:
var a = 1, b = 2, c = 3;
for ( var i in window ) {
console.log(i, typeof window[i], window[i]);
}
在150多个其他内容中,有以下内容:
getInterface function getInterface()
i string i // <- there it is!
c number 3
b number 2
a number 1 // <- and another
_firebug object Object firebug=1.4.5 element=div#_firebugConsole
"Firebug command line does not support '$0'"
"Firebug command line does not support '$1'"
_FirebugCommandLine object Object
hasDuplicate boolean false
因此,可以列出当前范围内的一些变量,但它不可靠,简洁,高效或易于访问。