javascript - Javascript:TypeError:回调不是函数
问题描述
在这里拉我的头发,试图理解 Javascript 令人恼火的细微差别。希望一些 JS 大师可以看一看,指点然后走,“嗯,你的问题……”。
这是问题的精简示例:
var Parent = (function () {
var func1 = function () {
func2(function (res) {
console.log(res);
});
};
var func2 = function (callback) {
callback('abc');
};
return {
init: function () {
func1();
func2();
}
};
})();
打电话给Parent.init();
这失败并出现错误:
Uncaught TypeError: callback is not a function
at check2 (<anonymous>:9:9)
at Object.init (<anonymous>:15:13)
at <anonymous>:1:8
让我感到惊讶的是,如果我像这样注释掉封闭代码,那么它会按预期工作:
// var Parent = (function () {
var func1 = function () {
func2(function (res) {
console.log(res);
});
};
var func2 = function (callback) {
callback('abc');
};
// return {
// init: function () {
// func1();
// func2();
// }
// };
// })();
...并打电话给func1();
结果:
abc
我错过了什么?
谢谢
解决方案
在您的版本中,您在调用func2()
时未指定callback
函数,这是必需的参数。在您的第二个示例(init
已注释掉)中,您正确地指定callback
了func2(function (res) { ... });
.
下面的代码片段是您正在寻找的东西吗?
const Parent = (function () {
const func1 = function () {
func2(function (res) {
console.log(res);
});
}
const func2 = function (callback) {
callback('abc'); // this is passing 'abc' to line 3 of this snippet
}
return {
init: function () {
func1();
// func2(); // you don't want to call "func2" here, as "func1" calls it
// Or you could run:
func2(function (res) {
console.log(res);
});
// But this makes "func1" redundant
}
};
});
Parent().init();
// Output
abc
推荐阅读
- reactjs - 如何将自定义接口作为道具传递到功能性 React 组件中
- c++ - 动态数组:访问冲突写入位置 0xCDCDCDCD
- sql - 列范围包含聚合函数,在使用 CASE、数组和结构时,不允许在 GROUP BY 中使用
- python - 使用 tensorflow 2.1.0 更新字典
- ruby-on-rails - 如何在哈希数组中搜索介于其他两个值之间的值
- ms-word - 有没有办法为 Microsoft Word 加载项创建新的键绑定?
- ubuntu - 为什么 Openstack swift Object 开始给我以下错误?
- google-cloud-platform - Kong GCP 堆栈问题:代理端口设置
- firebase - 私人产品的 Firebase 电话身份验证
- python - Api for Echo VR 给出 TypeError: __init__() got an unexpected keyword argument 'orange_team_restart_request'