这个ES6功能的含义或解释是什么?

时间:2016-07-13 06:56:42

标签: javascript ecmascript-6

标题不好,我会在找到这个名字后立即编辑。

我一直在学习Redux,它是我见过这种功能的第一个地方。

export default connect(null, actionCreators)(TodoApp)

我无法理解,显然" null"和" actionCreators" params传递给connect函数,但是"(TodoApp)"在做什么?

2 个答案:

答案 0 :(得分:2)

Javascript支持第一类函数,它们可以像普通数据一样传递。因此connect(null, actionCreators)会返回传递给TodoApp的匿名函数。

一个简单易懂的例子是:



var obj = {
  name: "Test",
  age: 10
}

var f = () => {
  // Do whatever f function should do
  
  // Return an anonymous function that takes in an object as parameter
  return (obj) => {
    
    // Do whatever we want to to with the object
    console.log(obj.name)
  }
}

// These two methods are equivalent
  // 1.- 
  f()(obj);

  // 2.-
  var f2 = f();
  f2(obj);




答案 1 :(得分:1)

connect(null, actionCreators)(TodoApp);

和以下一样好:

var fun = connect(null, actionCreators);
fun(TodoApp);

它是这样的:

function connect(val1,val2){
  console.log(val1,val2);
  return function(val3){
    console.log(val3);  
  }
}

var actionCreators = "X";
var TodoApp = "Some Object";

connect(null, actionCreators)(TodoApp);

如您所见,connect需要两个输入,

返回一个匿名方法,该方法接受一个输入。