有人可以在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);
}
答案 0 :(得分: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是一个对象。在此对象上有2个属性,它们都是函数(与该对象关联的方法)。
答案 1 :(得分:-1)
(Lambda是按定义的匿名函数,我认为您所说的“函数作为变量”)
lambda并不是JavaScript的工作方式,请看以下示例:
var displayClosure = function() {
var count = 0;
return function () {
return ++count;
};
}
var inc = displayClosure();
inc(); // returns 1
inc(); // returns 2
inc(); // returns 3
代码作者:谢尔盖·伊林斯基ref
var myButton = document.getElementById("myButton");
var myMessage = "it's working";
myButton.onclick = function() { alert(myMessage); };