Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回没有显式return语句的值_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 返回没有显式return语句的值

Javascript 返回没有显式return语句的值,javascript,ecmascript-6,Javascript,Ecmascript 6,在JavaScript中,从函数末尾脱落会返回未定义的;如果要返回值,需要使用显式的return语句 至少到目前为止是这样,但看起来ECMAScript 6至少有时会允许省略返回 在什么情况下会出现这种情况?它是否与功能和=>之间的区别有关,或者是否有其他标准?关于这一主题的最终材料是最新的ES Harmony,特别是源自。为了方便起见,可以找到一个非官方的HTML版本 简言之,这种新语法将允许更简洁地定义函数。ES规范草案包含了所有细节,我将在这里非常粗略地解释 语法是 ArrowParame

在JavaScript中,从函数末尾脱落会返回未定义的
;如果要返回值,需要使用显式的
return
语句

至少到目前为止是这样,但看起来ECMAScript 6至少有时会允许省略
返回


在什么情况下会出现这种情况?它是否与
功能
=>
之间的区别有关,或者是否有其他标准?

关于这一主题的最终材料是最新的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函数的语法完全相同。

在早期ES版本中,
new
关键字已经起作用了:-)ECMAScript 6中的这一变化何时会逐渐发展到现代浏览器支持的javascript?另外,您要省略的
返回
是什么意思?在当前javascript中不能省略return:“在javascript中,从函数末尾掉下来会返回未定义的”?您的意思是即使省略了return也返回一个值吗?请澄清。@meewoK我的意思是,我从我的发现中得到的印象是,你不能将后续函数写成
函数(x){x+1}
,但你可以写成
x=>x+1
,但我不知道区别的确切标准是什么。