为什么返回调试器在javascript中失败?

时间:2012-02-29 16:41:23

标签: javascript specifications

我正在进行一些重构,想要进入调试器并返回到一段代码进行永久性更改,然后我放入了我的一个函数

return debugger;

我收到了意外的令牌错误(在chrome中)。

debugger;
return;

工作得很好。 ECMAScript规范中是否存在实际指定为正确行为的内容?这是一个浏览器错误吗?这种失败有什么特别的逻辑吗?

2 个答案:

答案 0 :(得分:3)

return后面跟一个Expression,在评估时会成为返回的结果。 debugger不是表达式,而是Statement。因此,return debugger;失败的原因相同return for (i = 0; i < 10; ++i);return if (a > b);等失败 - 因为您无法将语句用作表达式。

答案 1 :(得分:1)

这确实是正确的行为。原因是调试器被定义为语句,而不是表达式。这意味着它只能在语句上下文中使用 - 也就是说,形式为:

debugger;

但是,您无法将其置于表达式上下文中,如

return debugger;

这实际上与你不能写的原因相同,比如

return break;