我正在进行一些重构,想要进入调试器并返回到一段代码进行永久性更改,然后我放入了我的一个函数
return debugger;
我收到了意外的令牌错误(在chrome中)。
debugger;
return;
工作得很好。 ECMAScript规范中是否存在实际指定为正确行为的内容?这是一个浏览器错误吗?这种失败有什么特别的逻辑吗?
答案 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;