在典型的浏览器环境中,有一大堆全局变量可以开始使用,并且通常在您可能加载的任何Web应用程序中更多。当我从devtools的会话中进行跟踪时,我想列出我自己的所有变量,以便快速查看我已经发现的内容以便恢复,而不是试图从窗口和命令行历史中将它拼凑在一起,理想情况下没有来自页面或浏览器对象模型。
(如果您想要所有全局变量,而不仅仅是您在devtools中创建的那些there's a Q&A for that here。)
答案 0 :(得分:1)
如果页面没有动态地将新标识符泄漏到全局范围,则此hack会列出在window
标识符之后创建的所有标识符,这似乎非常适合此目的。 myids()
只列出他们的名字,而myvars()
将他们收集到您可以检查的对象中,以便在上下文中一起查看它们:
function myids() {
function notUs(i) { return i !== 'myids' && i !== 'myvars'; }
var ids = Object.keys(window);
return ids.slice(ids.indexOf('window') + 1).filter(notUs);
}
function myvars() {
function gather(a, i) { a[i] = window[i]; return a; }
return myids().reduce(gather, {});
}
这不是完美的,但总比没有好,它应该只有误报,没有假阴性。