我有一个函数,我试图转换为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中有新的方法来做到这一点吗?


当前回答

为了写一个名为箭头的函数,你可以参考下面的例子,在这个例子中,我有一个名为LoginClass的类,在这个类中我写了一个名为successAuth的箭头函数 类LoginClass {

    constructor() {

    }

    successAuth = (dataArgs)=> { //named arow function

    }

}

其他回答

为了写一个名为箭头的函数,你可以参考下面的例子,在这个例子中,我有一个名为LoginClass的类,在这个类中我写了一个名为successAuth的箭头函数 类LoginClass {

    constructor() {

    }

    successAuth = (dataArgs)=> { //named arow function

    }

}

这是es6

是的,我认为你想要的是这样的:

const foo = (depth) => {console.log("hi i'm Adele")}
foo -> // the function itself
foo() -> // "hi i'm Adele"

似乎这在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'},

实际上,它看起来像命名箭头函数的一种方式(至少在chrome 77…)是这样做的:

"use strict";
let fn_names = {};
fn_names.foo = () => { throw new Error(); };
console.log("foo.name is: " + foo.name);
try {
  foo();
} catch (e) {
  console.log(e.stack);
}

不。箭头语法是匿名函数的缩写形式。匿名函数是匿名的。

命名函数用function关键字定义。