调试:获取函数内部绑定变量的内容
Debugging: Get content of variables bound inside functions
我在函数内部定义了一些函数,但设置为全局:
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
X-Y问题响应;我不知道如何从控制台中访问arr
,但是我可以给您一些通过断点进行调试的技巧,即使代码被最小化。
尝试使用谷歌浏览器,并在调试器中,单击代码窗口下方的{}
图标。这将使脚本打印得很漂亮,尽管变量名仍然会被最小化。(_a1 = new
_43 '等)
接下来是阅读精简代码的艺术;代码缩小器不能改变任何通过字符串访问的东西;其中签名最多的是对象属性(.
之后的任何东西)。如果没有空格,查找特定的符号序列也会变得更容易。您可以尝试按ctrl键查找.indexOf
、==-1
等术语。如果这是一个实际的公司发布的库,那么您可以超越您的小示例,并参考myCompanyLibrary.dockInstance.locator=
之类的东西。
找到该行后,可以在那里设置一个断点。好运!
相关文章:
- Jquery将循环变量绑定到getJSON函数
- AngularJS将变量绑定到自定义html属性
- 将内部作用域变量绑定到外部“模板”
- 无法将 angularjs 控制器变量绑定到 html 页面
- 与聚合物中的全局变量绑定
- 如何将变量绑定到 jquery ajax 请求
- 使用node-sqlite3将变量绑定到SQL语句
- AngularJS在没有被告知的情况下将两个变量绑定在一起
- AngularJS将变量绑定到与该变量相关的数组
- 如何将名称中有空格的json值与变量绑定
- AngularJS:将服务变量绑定到控制器上的值's$范围
- 如何将AngularJS变量绑定为一个Polymer全局变量
- 将JavaScript变量绑定到HTML元素
- AngularJS:最好的将工厂变量绑定到$作用域或指令的方法
- AngularJS:控制器变量绑定到服务变量后没有更新
- 如何将变量绑定到函数调用
- Angular.js变量绑定
- 将angularJS变量绑定到nodejs失败
- 将服务中的变量绑定到Angular应用程序中的html模板
- 将相同的模型变量绑定到单选按钮和输入文本