jQuery的attr()在chrome中逐步调试时失败

jQuery's attr() fails when debugging step by step in chrome

本文关键字:调试 失败 chrome attr jQuery      更新时间:2023-09-26

我在Chrome中调试下一个代码时发现了一些奇怪的代码行为:

1. $('.btn-info').click(function(){
2.         console.log("Category ID: " + $(this).attr("category_id"));
3.         var categoryId = $(this).attr("category_id") ;
4.         console.log("CategoryID: " + categoryId);
5. });

当我在第 3 行放置断点并使用调试器运行脚本时,我得到的消息Category ID: {some value}按预期打印在控制台中。但是,继续跨过第 3 行并检查 categoryId 的值显示变量的值由于某种原因而NaN,因此在跨过第 4 行后,我进入控制台Category ID:

有趣的是,如果我运行没有断点的相同脚本,我会按预期在控制台中打印Category ID: {some value}两条消息。

请问谁能解释一下这种奇怪的行为?

谢谢。

调试

时这样的问题通常在其他东西更改值时发生,例如类似

var val=1;
$.get(..., function(){
  val=2
});
console.log(val);

如果在 console.log() 上添加断点,程序可能有足够的时间完成 get 并运行回调。 但是如果没有断点,输出中通常为 val=1。

当然不是那么明显,但是查看回调,您会发现问题所在