只有当代码首先在另一个断点停止时,我才需要在断点停止。
示例:
for(let i=0; i<5; i++){
someFunction(); // put conditional breakpoint here with i==3
}
function someFunction(){
// put another breakpoint here, but this should be executed only for i==3
// we don't have i here for the condition, so it should be executed only if prev breakpoint was executed
}
Chrome开发工具可以实现这一点吗?
1条答案
按热度按时间pdtvr36n1#
实际上,在创建条件断点时可以编写任意代码。可以编写整个代码块(使用shift-enter来编写多行代码),如果你愿意,使用任何你想要的JS。任何
const/let/var
声明只能在这个代码块的作用域中访问。使用全局变量来传递数据到其他条件断点,或者任何你想在DevTools控制台手动运行的代码。如果你不想在这个断点停止,只要使用false
作为你代码的最后一个表达式。在您的情况下,为
someFunction()
行设置条件断点:_i = i, false
或_i = i; false;
(在本例中,_i
与window._i
相同),只需确保使用足够唯一的名称,以避免与您的其他代码或您使用的第三方库冲突。在函数内部,设置一个以
_i == 3
为条件的条件断点。正如我所发现的,您可以使用条件断点完成各种各样的巧妙技巧:
另一个注意事项:如果你在条件断点中使用的代码有任何语法错误,那么整个代码块将不会被执行,断点也不会被触发。因此,如果你的条件断点代码看起来不起作用,检查它是否有错误--例如,在那里设置一个常规断点,触发它,然后在控制台中执行您试图在条件断点中使用的代码,看看它有什么问题。