函数返回函数

时间:2019-05-14 10:21:30

标签: javascript

我试图围绕JS的基础知识

    const someFun = (name) => {
      return (name) => {
        console.log(name + 'yolo') 
        return name 
       }
    }

 const myName = someFun('Varun')
 console.log(myName)

这正在返回(或记录)

(name) => {
   console.log(name + 'yolo') 
   return name 
  }

为什么我希望它记录通过参数(varun)传递的名称。

有人可以解释我为什么吗?还有为什么我们需要一个函数return语句来拥有一个函数?

最后,我还看到(例如,在我的redux情况下)这样的代码

export const updateData = (updatedData) => {
  return function (dispatch) {

这里,main函数将updateData作为参数,而return函数将dispatch作为参数(两者之间没有任何上下文)。有人也可以向我解释吗?

1 个答案:

答案 0 :(得分:2)

  

为什么我希望它记录作为参数(varun)传递的名称。

someFun一个返回函数的函数。完全不使用name参数。

如果您调用了返回的函数,那么那个将返回name参数的值。 (请注意,返回的函数定义了自己的名为name的自变量,因此可以在someFun中使用它。)

  

为什么我们需要一个函数return语句才能拥有一个函数?

您没有,但是如果您没有return语句,则该函数将返回未定义。

  

这里,main函数将updateData作为参数,而return函数将dispatch作为参数(两者之间没有任何上下文)。有人也可以向我解释吗?

他们使用不同的变量名作为参数。就是这样。

这很有用,因为嵌套函数不会掩盖外部函数的变量,因此可以在嵌套函数内部对其进行访问。

function updateData(updatedData) {
     return function (dispatch) {
         console.log({updatedData, dispatch});
     }
}

const returned_function = updateData(1);
returned_function(2);
returned_function(3);