我在函数中定义了一些函数,但设置为global:
function someFn(someVar) {
var arr = makeArray(someVar);
// global function:
foo = function(bar) {
return arr.indexOf(bar)==-1;
}
}
当我使用chrome控制台调试时:
> foo
function (bar){return arr.indexOf(bar)==-1;}
我可以在不更改源代码的情况下获得arr
的内容吗?
假设我不能只获取并执行生成arr
的命令,因为我不知道someVar
的最后一个值。
变量必须在内存中的某个位置,因为当我调用该函数时,它可以被访问,但它有什么名称?我已经尝试过了:
> foo.arr
undefined
答案 0 :(得分:0)
X-Y问题反应;我不知道你如何从控制台访问arr
,但是我可以给你一些通过断点进行调试的技巧,即使代码被缩小了。
尝试使用Google Chrome,在调试器中,点击代码窗口下方的{}
图标。这将打印脚本,虽然varnames仍然会缩小。 (_a1 = new
_ 43`等。)
接下来是阅读缩小代码的艺术;代码缩小器不能更改通过字符串访问的任何内容;其中签名最多的是对象属性(.
之后的任何内容)。它也有助于没有空格,更容易找到特定的符号序列。您可以尝试使用CTRL-Fing来查找.indexOf
,==-1
等术语。如果这是一个实际的公司发布的库,您可能会超越您的小例子并参考像{{1 }}
一旦找到该行,就可以在那里放置一个断点。祝你好运!