rwa*_*ace 5 javascript ecmascript-6
在JavaScript中,从函数末尾开始返回undefined; 如果要返回值,则需要使用显式return语句.
至少这是迄今为止的情况,但看起来ECMAScript 6至少有时会允许return省略.
在什么情况下会是这种情况?将它与之间的区别function和=>或者是有一些其他的标准?
关于该主题的权威材料是最新的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函数的定义语法.