作为变量的函数

问题描述 投票:-1回答:2

有人可以分享一些关于在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);
}
javascript function variables callback
2个回答
1
投票

摘要:

在javascript函数中可以用两种方式声明:

函数声明:

function foo () {}

函数表达式:

const foo = function () {}

将函数作为变量传递的符号称为函数表达式。表达式只是一行评估值的代码。在这种情况下,值是一个函数对象。这一切都是可能的,因为在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是一个对象。在这个对象上有两个属性,它们都是函数(与对象相关的方法)。


-1
投票

(根据定义,Lambdas是匿名函数,我认为你的意思是“函数作为变量”)

这不是lambda在JavaScript上的工作方式,请看一下这个例子:

var displayClosure = function() {
    var count = 0;
    return function () {
        return ++count;
    };
}
var inc = displayClosure();
inc(); // returns 1
inc(); // returns 2
inc(); // returns 3

代码:Sergey Ilinsky ref

var myButton = document.getElementById("myButton");
var myMessage = "it's working";
myButton.onclick = function() { alert(myMessage); };
© www.soinside.com 2019 - 2024. All rights reserved.