未捕获的SyntaxError:意外的令牌返回 - 仍然没有答案?

时间:2013-12-22 02:38:24

标签: javascript function compiler-errors return syntax-error

所以这个标题有几十个问题,但是,我能找到的所有答案似乎都提到了一些在某些特定情况下工作的黑客,但在其他情况下并没有帮助。许多人都关注jQuery或Ajax,但问题是纯粹的JavaScript出现在非常基本的层面:

function f() {
  false || (return true);
}

此函数声明(不执行)抛出

Uncaught SyntaxError: Unexpected token return

Chrome中的

SyntaxError: Return statements are only valid inside functions

在Safari中

。但是这个功能没有:

function f() {
  false || (a=true);
  return true;
}

任何人都可以解释这种奇怪的行为吗?

2 个答案:

答案 0 :(得分:3)

因为return不是表达式,但期望表达式:

function f() {
  return false || true;
}

答案 1 :(得分:3)

您在表达式中使用return语句作为表达式,这是不可能的,因为JavaScript引擎无法对其进行求值。这就是为什么它会抛出错误。