dev*_*xer 5 javascript firefox firebug javascript-debugger firefox-developer-tools
我想知道下面显示的序列是如何发生的.
这是有问题的功能:
WebSocketConnector.prototype.sendMessage = function(message) {
if (socket !== null) {
socket.send(message);
console.log('Sent: ' + message);
} else {
alert('Failed to send message. WebSocket connection not established.');
}
};
Run Code Online (Sandbox Code Playgroud)
以下是调试此函数的调用时发生的情况:




sendMessage从一个地方打电话,我正在记录这个电话.sendMessage日志中没有未计入的调用,因此我不认为异步是一种解释.如果我将一个console.log语句添加到else块的第一行(将警报按下到第37行),控件将从第34行直到第37行(跳过console.log语句).
此外,我应该提到,即使直接进入该代码,也不会出现任何警报.
这是sendMessage函数的间距和CRLF :

这是因为调试器在返回到调用堆栈帧之前会单步执行到最后一个可执行行。在你的例子中,这是包含该alert()函数的第 36 行。如果调试器跳到函数的右花括号,即第 38 行,就会更清楚。
已经有一份报告改变了这种行为:
| 归档时间: |
|
| 查看次数: |
637 次 |
| 最近记录: |