ES6/8 语法 - 箭头函数

ES6/8 syntax - arrow functions

下面的两个虽然看起来是一样的,但结果却不同。

1

const addBlogPost = dispatch => {
    return () => {
        dispatch({type: 'add_blogpost'});
    }
};

2

const addBlogPost = dispatch => dispatch({type: 'add_blogpost'});

谁能指出它们有何不同?

结果将始终相同,因为两个函数都在重新调整同一件事。 唯一的区别是:

  1. 在第一个函数中,您将返回一个函数,该函数 returns 一个 returns dispatch 函数的对象。
  2. 在第二个函数中,您将直接返回 dispatch 函数。

您可以使用此 site 将 es6 箭头函数编译为 vanilla JS,以便轻松查看差异。

第一个编译成这个

var addBlogPost = function addBlogPost(dispatch) {
  return function () {
    dispatch({
      type: 'add_blogpost'
    });
  };
};

虽然 second 编译成这个

var addBlogPost = function addBlogPost(dispatch) {
  return dispatch({
    type: 'add_blogpost'
  });
};

第一个 returns 一个有调度的函数,而第二个 returns 一个直接调度的函数。