javascript - 作为变量的函数
问题描述
有人可以分享一些关于在 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 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 个属性,它们都是函数(与对象关联的方法)。
推荐阅读
- javascript - bcrypt hash密码和mongodb中保存的密码hash不一样
- ruby - 由于 ERROR_ENVVAR_NOT_FOUND 导致 RVM Ruby2.2 安装与 cygwin 失败
- sql - JSON数据中的Python查找和替换
- amazon-web-services - 如何散列整个 Redshift 表?
- reactjs - Reactjs 在继续回调之前等待 array.forEach 完成
- php - 为什么即使我检查数据是否存在,我的表仍然会插入重复数据?PHP - MYSQL
- apache - 如何在 phpmyadmin 上禁用更改密码?
- python - 在单台机器上使用超过 26 个工作人员时,分布式 TensorFlow 2.0 不起作用
- python - 如何使用 python selenium 识别这个按钮?
- mysql - 如何修复 Sql 查询