我有一个函数,我试图转换为ES6中的新箭头语法。它是一个命名函数:
function sayHello(name) {
console.log(name + ' says hello');
}
有没有办法给它一个没有var语句的名字:
var sayHello = (name) => {
console.log(name + ' says hello');
}
显然,我只能在定义这个函数之后才能使用它。大致如下:
sayHello = (name) => {
console.log(name + ' says hello');
}
在ES6中有新的方法来做到这一点吗?
似乎这在ES7中是可能的:
https://babeljs.io/blog/2015/06/07/react-on-es6-plus#arrow-functions
给出的例子是:
class PostInfo extends React.Component {
handleOptionsButtonClick = (e) => {
this.setState({showOptionsModal: true});
}
}
ES6的箭头函数体与围绕它们的代码共享相同的词法this,这得到了我们想要的结果,因为ES7属性初始化器的作用域是这样的。
请注意,为了让它与babel一起工作,我需要启用最具实验性的ES7 stage 0语法。在我的webpack.config.js文件中,我更新了babel加载器,如下所示:
{test: /\.js$/, exclude: /node_modules/, loader: 'babel?stage=0'},