以下语法意味着什么?
len(string) - len(substring) = period
我知道我们正在将两个参数传递给一个函数,但是下面的目的是什么?
connect(mapStateToProps, mapDispatchToProps)(Home)
答案 0 :(得分:8)
它看起来不像节点而是Redux
,而在评论中看起来不像ES6那样。
它是什么:Connect
是一个更高阶(工厂)的功能,即。它返回一个函数。它是返回的函数,可以使用Home
看看下面connect
function connect(param1, param2) {
return innerFunction (innerParam) {
console.log(`${param1} ${innerParam} ${param2}`)
}
}
connect('A','B')('precedes')
// outputs 'A precedes B'
修改:添加了一个示例。
答案 1 :(得分:2)
函数可以返回一个函数,你可以立即调用这个返回的函数。
有关信息以及评论中已经说明的事实,将一个函数调用分解为更小的函数调用的事实称为 currying ,这是JavaScript中的常见做法(更多信息请点击此处:{ {3}})
此示例可能对您有所帮助:
function function1(info) {
return function(innerParam) {
console.log(`Hello this function has info ${info} and has just been called with this param: ${innerParam}` )
}
}
function1('Bobby')('Alice');
// same as :
var bobbyFunction = function1('Bobby');
bobbyFunction('Alice');

这对于动态生成依赖于某个参数的函数很有用,但仍可以使用其他一些更改的参数多次调用。想象一下,例如:
var bobbyFunction = function1('Bobby');
['Alice', 'Tommy', 'Johny'].forEach(name => bobbyFunction(name));
答案 2 :(得分:1)
这是简单的javascript。函数connect
返回另一个函数,代码立即使用参数Home
调用它。
function first(f) {
return function second(s) {
console.log(f, s);
}
}
// this
first('one')('two');
// is same as this
var x = first('one');
x('two');

答案 3 :(得分:0)
见这个例子:
connect(mapStateToProps, mapDispatchToProps)(Home)// just like code below
function f(){
//do something
}
function connect(a,b){
return f;
}
connect(mapStateToProps, mapDispatchToProps);//first,return f;
connect(mapStateToProps, mapDispatchToProps)(Home)//second,return f(home);