返回没有显式return语句的值

时间:2013-06-03 11:27:58

标签: javascript ecmascript-6

在JavaScript中,从函数末尾开始返回undefined;如果要返回值,则需要使用显式return语句。

至少这是迄今为止的情况,但看起来ECMAScript 6至少有时会允许省略return

在什么情况下会是这种情况?它是否与function=>之间的区别有关,还是有其他标准?

1 个答案:

答案 0 :(得分:5)

关于这个主题的最终材料是最新的ES Harmony specification draft,特别是来自arrow function syntax proposal的部分。为方便起见,可以找到非正式的HTML版本here

简而言之,这种新语法将允许更简洁地定义函数。 ES规范草案包含了所有细节,我将在这里大致解释一下。

语法是

ArrowParameters => ConciseBody

ArrowParameters部分定义了函数所采用的参数,例如:

()                   // no arguments
arg                  // single argument (special convenience syntax)
(arg)                // single argument
(arg1, arg2, argN)   // multiple arguments

ConciseBody部分定义函数的主体。这可以定义,因为它一直被定义,例如

{ alert('Hello!'); return 42; }

或,在函数返回评估单个表达式的结果的特殊情况下,如下所示:

theExpression

如果这听起来很抽象,这是一个具体的例子。根据当前的草案规范,所有这些功能定义都是相同的:

var inc = function(i) { return i + 1; }
var inc = i => i + 1;
var inc = (i) => i + 1;
var inc = i => { return i + 1; };

顺便说一句,这个新语法与C#用于允许定义lambda函数的 great 语法完全相同。