返回没有显式return语句的值

rwa*_*ace 5 javascript ecmascript-6

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

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

在什么情况下会是这种情况?将它与之间的区别function=>或者是有一些其他的标准?

Jon*_*Jon 5

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

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

语法是

ArrowParameters => ConciseBody
Run Code Online (Sandbox Code Playgroud)

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

()                   // no arguments
arg                  // single argument (special convenience syntax)
(arg)                // single argument
(arg1, arg2, argN)   // multiple arguments
Run Code Online (Sandbox Code Playgroud)

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

{ alert('Hello!'); return 42; }
Run Code Online (Sandbox Code Playgroud)

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

theExpression
Run Code Online (Sandbox Code Playgroud)

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

var inc = function(i) { return i + 1; }
var inc = i => i + 1;
var inc = (i) => i + 1;
var inc = i => { return i + 1; };
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这个新的语法是完全一样的伟大,C#语言使用,允许lambda函数的定义语法.