在JavaScript中,从函数末尾开始返回undefined
;如果要返回值,则需要使用显式return
语句。
至少这是迄今为止的情况,但看起来ECMAScript 6至少有时会允许省略return
。
在什么情况下会是这种情况?它是否与function
和=>
之间的区别有关,还是有其他标准?
答案 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 语法完全相同。