5

In JavaScript, falling off the end of a function returns undefined; if you want to return a value, you need to use an explicit return statement.

At least this was hitherto the case, but it looks like ECMAScript 6 will at least sometimes allow the return to be omitted.

In what circumstances will this be the case? Will it be related to the distinction between function and => or is there some other criterion?

4

1 回答 1

5

关于这个主题的权威材料是最新的 ES Harmony规范草案,特别是源自箭头函数语法提案的部分。为方便起见,可以在此处找到非官方的 HTML 版本。

简而言之,这种新语法将使函数的定义更加简洁。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 函数的语法完全相同。

于 2013-06-03T11:50:05.427 回答