更改变量值时中断
Break on a change of variable value
与这里的其他问题类似,比如这个
是否有一种方法来打破在任何JavaScript调试器的变量值的变化?(如IE开发工具,Visual Studio,或Firebug)?
我猜它类似于"监视变量",但我希望能够看到调用堆栈并在变量实际发生更改时暂停它。
另一种方法可能是用自定义设置器覆盖值设置,并在其中放置一个断点,但不幸的是,这在IE中不起作用。
看来,这种类型的行为是可用的,至少对于用c++编写的非托管代码,所以我想也许用c++编写的javascript引擎(谷歌的V8)可能有类似的东西,但这似乎也没有我想要的。
您甚至不需要IDE -您可以使用"Object.watch() ":
对象。看教程
如果您使用任何一个调试器,我强烈推荐Firebug。所有的Javascript, HTML和CSS需要:-):
http://getfirebug.com/javascript===========================================================
2019年更新:
对象。手表是古老的历史。不凑巧的是,它在大多数现代浏览器中是不可用的。
我个人最喜欢的JS调试工具是Chrome Developer Tools.
我个人最喜欢的JS IDE(用于Angular, . net Core等)是Microsoft Visual Studio Code (MSVC)。
你可以做任何"预期"的调试操作-包括设置手表-与Chrome调试器(就像你可以与FF Firebug)。
Chrome调试器很好地集成了MSVC IDE。
两者都是"免费的"(至少"像啤酒一样免费");
我在Chrome中成功地使用了这个库,它看起来支持所有主要的浏览器。
https://gist.github.com/eligrey/384583只包含.js文件,然后调用:
yourObject.watch('someProperty', function() {
doWhatYouWant();
debugger;
console.write('this too');
alert('Object Changed'); //etc
});
我不知道我是否误解了你的问题。如果你想在Chrome开发者工具的js调试会话中观察一个表达式并在它达到一定值时停止,这是相当微不足道的。
您可以简单地将断点放在您想要检查的值所在的行上,然后用鼠标右键单击并选择"编辑断点…"。将弹出一个对话框,提示输入表达式,当它的值为true时,执行将停止。
例如,假设你有一个循环,你正在向其中的一个变量添加一个单位,并希望在变量等于3时停止执行。循环中的表达式看起来像这样:
n = i++;
您必须在该行设置断点,并且要监视的表达式(在"Edit breakpoint…"提示之后)将是n == 3
。当运行代码时,当变量达到该值时,它将停止。
您会注意到您的条件已经设置,因为您的断点变为橙色而不是蓝色。
- JavaScript:单击时相对于父级增加变量值
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 如何从特定页面中提取php变量值
- JavaScript模数未正确递增变量值
- 替换另一个变量对象中的变量值
- mandrill合并标记不接受变量值
- 将变量值从一个javascript传递到另一个javascript
- 如何将变量值附加到另一个变量
- html类名中的数字形式的Javascript变量值
- 如何在C#中获取Javascript变量值
- 如何将C#变量值传递给javascript以使用amcharts
- 正在从addEventListener中获取变量值
- 使用变量值作为'名称标识符'javascript/html
- 为什么在以下代码段中无法访问中的变量值
- 我们可以在初始化variable Angular JS时将变量值声明为未定义吗
- 在HTML/Javascript文件中获取App Inventor 2变量值
- 将变量值传递给另一个函数
- jQuery UI对话框窗体-缺少变量值
- 如何访问具有变量值的对象
- 函数中的$scope变量值没有更改