类型错误:回调不是 JavaScript 中的函数
TypeError: callback is not a function in JavaScript
“TypeError: callback is not a function”错误发生在我们为
callback
函数定义参数但调用函数而不传递回调时。
要解决该错误,请指定一个函数作为默认参数,或者在调用该函数时始终提供一个参数。
下面是错误如何发生的示例。
function example(callback) { return callback(); } // ⛔️ TypeError: callback is not a function example();
callback
作为参数,但在调用该函数时没有提供回调。调用函数时始终提供回调
要解决该错误,请确保在调用该函数时始终提供回调。
function example(callback) { return callback(); } // ✅ Works example(() => { console.log('success'); });
我们在调用函数时传递了一个箭头函数回调example
,但你也可以使用命名函数。
function example(callback) { return callback(); } function logMessage() { console.log('success'); } // ✅ Works example(logMessage);
callback
为参数定义一个默认值
或者,您可以为参数定义默认值callback
。这样即使在调用函数时没有提供参数也不会报错。
function example(callback = () => {}) { return callback() } // ✅ Works example();
我们使用了一个不做任何事情的函数作为
callback
参数的默认值。
当在没有提供回调的情况下调用函数时,将使用空函数的默认值。
您还可以根据您的用例使用任何其他函数作为默认参数。
function example(callback = defaultFunc) { return callback(); } function defaultFunc() { console.log('success'); } // ✅ Works example(); // 👉️ success
Check if the callback function was provided before calling it #
Perhaps, an even better approach is to check if the callback was provided before
calling it in the function.
function example(callback) { if (typeof callback === 'function') { return callback() } } // ✅ Works example();
The typeof
operator allows us to check if the callback
variable stores a
function.
We only call the callback if it is provided and has a type of function
.
console.log
the callback
variable and its type, e.g. console.log(typeof callback)
.Make sure that the variable stores a function before calling it.
You might be declaring a variable named callback
that shadows the value of a
function you’re trying to invoke.
Make sure you’re spelling callback
correctly, as variable names are
case-sensitive.
Conclusion #
“TypeError: callback is not a function”错误发生在我们为
callback
函数定义参数但调用函数而不传递回调时。
要解决该错误,请指定一个函数作为默认参数,或者在调用该函数时始终提供一个参数。