[英]what is the es6 fat arrow equivalent to a es5 function declaration
使用ES5,我可以根据需要声明函数声明或表达式。
function es5FunctionDeclaration() {
return 'I am an es5 function declaration';
}
var es5FunctionExpression = function() {
return 'I am an es5 function expression';
}
使用ES6粗箭头,通常会创建如下所示的函数表达式...
const es6FunctionExpression = () => {
return 'I am an es6 function expression';
}
但是我还没有找到用粗箭头进行函数声明的方法,也许是不可能的。
// es6FunctionDeclarationWithFatArrow ??
要在ES6中声明函数,您可以通过以下方法实现:
const functionName = () => {};
或者,您可以通过function
关键字来做到这一点:
function functionName() {}
而且,如果要创建ES6类,则不会创建函数,而是创建方法:
class MyClass {
constructor() {}
method1() {}
method2() {}
}
箭头功能的定义在此处: http : //www.ecma-international.org/ecma-262/6.0/#sec-arrow-function-definitions
ArrowFunction[In, Yield] :
ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
ArrowParameters[Yield] :
BindingIdentifier[?Yield] CoverParenthesizedExpressionAndArrowParameterList[?Yield]
ConciseBody[In] :
[lookahead ≠ { ] AssignmentExpression[?In] { FunctionBody }
这在英语中的意思是,箭头函数只能像args => {}
这样声明。 如您所说,您可以使用const func = args => {}
或将其作为参数传递给另一个函数,从而将其绑定到变量,但这是不可能的。 确实,将箭头函数作为参数传递是创建它的主要原因之一(因为绑定了this
)。 参见词汇this (和附录 )
正如@MaheerAli所提到的,箭头函数巧妙地避免了函数提升 ,这可能是令人惊讶的行为。
ES6确实有一些以较短的方式声明函数的方法,例如在对象内:
const obj = {
func() {
// ...
}
}
首先,提升不是一个好的/有用的现象,并且函数声明也具有价值。 甚至两次声明一个变量也不会抛出错误的问题也是由于提升。
ES6旨在消除所有这些问题。 因此,没有必要再次添加相同的函数声明作为新功能来再次引起问题。
就像为什么在ES6中不能重新声明let
和const
或如何使let
和const
像var
一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.