javascript函数名后的两个括号

时间:2018-01-25 12:13:17

标签: javascript redux

以下语法意味着什么?

len(string) - len(substring) = period 

我知道我们正在将两个参数传递给一个函数,但是下面的目的是什么?

connect(mapStateToProps, mapDispatchToProps)(Home)

4 个答案:

答案 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);