我想知道下面显示的序列是如何发生的。
这是有问题的功能:
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.');
}
};
以下是我调试对该函数的调用时发生的情况:
1. 从第 32 行开始。
2. Step In,前进到第 33 行。
3. 再次 Step In,前进到第 34 行。
4. 再进一次,前进到第 36 行???
--> 怎么可能直接从 if 块的最后一行到else块的第一行呢?
一些重要的事实:
- 这里没有遗漏的步骤。
- 这真的发生了。
- 我只
sendMessage
从一个地方打电话,当那个电话发生时我正在记录。日志中没有下落不明的sendMessage
呼叫,所以我不认为异步是一种解释。 - 我也用 Firebug 调试器尝试了同样的事情,同样疯狂的事情发生了。
编辑/跟进
如果我将 console.log 语句添加到 else 块的第一行(将警报向下推到第 37 行),控件将从第 34 行直接转到第 37 行(跳过 console.log 语句)。
另外,我应该提到,即使直接进入该代码,实际上也不会出现任何警报。
编辑 2
这是sendMessage
函数的间距和 CRLF: