首页 > 解决方案 > 作为变量的函数

问题描述

有人可以分享一些关于在 JavaScript 中使用函数作为变量的知识吗?

如果我有以下代码片段

var error = function(param){
  /*Some coode*/
}

如何将上述函数中的参数作为回调函数传递

onWorkFail(error)//how to pass value for param ??

而且在下面的例子中, operationCallback 是不是一个变量?这种声明的目的是什么?它们在哪里派上用场?我已经看到这些东西使用了我的许多开发人员,但还没有弄清楚它的重要性。

var operationCallback =  {
      onsucess: function([some parameters]){
    },
    onfailure:failureFunction
}
function failureFunction(){
   /*some code here*/
}


function performOperation(){
    doSomeTask(operationCallback);
}

标签: javascriptfunctionvariablescallback

解决方案


概括:

在 javascript 中,函数可以通过两种方式声明:

函数声明:

function foo () {}

函数表达式:

const foo = function () {}

您将函数作为变量传递的符号称为函数表达式。表达式只是计算结果为 value 的一行代码。本例中的值是一个函数对象。这一切都是可能的,因为在 javascript 中,函数是一等公民。这意味着可以像任何其他数据一样传递函数(例如参数或变量)。

为什么这很有用?

当我们将函数存储在变量中或将其作为参数传递时,我们可以创建高阶函数。高阶函数是将函数作为参数或返回函数(或两者)的函数。这在各种情况下都非常有用,JS 甚至内置了一些非常方便的高阶函数。例如map.

const arr = [1,2,3];

const doubleArr = arr.map((el) => el * 2);

console.log(doubleArr);

在上面的示例中,该map函数接受一个回调,该回调在数组的每个元素上执行,然后返回一个新数组。


在您的示例中:

var operationCallback =  {
      onsucess: function([some parameters]){
    },
    onfailure:failureFunction
}

operationCallback 是一个对象。在这个对象上有 2 个属性,它们都是函数(与对象关联的方法)。


推荐阅读