调试:获取绑定在函数内的变量的内容

时间:2015-05-18 21:27:35

标签: javascript

我在函数中定义了一些函数,但设置为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

1 个答案:

答案 0 :(得分:0)

X-Y问题反应;我不知道你如何从控制台访问arr,但是我可以给你一些通过断点进行调试的技巧,即使代码被缩小了。

尝试使用Google Chrome,在调试器中,点击代码窗口下方的{}图标。这将打印脚本,虽然varnames仍然会缩小。 (_a1 = new _ 43`等。)

接下来是阅读缩小代码的艺术;代码缩小器不能更改通过字符串访问的任何内容;其中签名最多的是对象属性(.之后的任何内容)。它也有助于没有空格,更容易找到特定的符号序列。您可以尝试使用CTRL-Fing来查找.indexOf==-1等术语。如果这是一个实际的公司发布的库,您可能会超越您的小例子并参考像{{1 }}

一旦找到该行,就可以在那里放置一个断点。祝你好运!