覆盖没有函数传递给另一个函数的情况

Mor*_*ive 1 javascript

我有一个可以传递完整功能的功能.如果不是null,我不想调用完成,所以我这样做

function queryJS(sql, success, error, complete) { 
...
...
if (complete !== null) complete()
...
...
Run Code Online (Sandbox Code Playgroud)

当我用3个参数调用函数时,例如:

queryJS("SELECT BLAH FROM TABLE", mysuccess, myerror) 
Run Code Online (Sandbox Code Playgroud)

我明白了:

TypeError: complete is not a function
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

什么是覆盖没有完成功能的情况的最佳方法.

谢谢

jan*_*mon 5

一个空的参数总是如此undefined.所以你应该检查一下是否complete是一个函数:

if (typeof complete === "function") {
  complete();
}
Run Code Online (Sandbox Code Playgroud)

要为无效complete值抛出错误,您可以检查undefined或为参数数组长度:

if (typeof complete !== "undefined") {
  complete();
}

if (arguments.length >= 4) {
  complete();
}
Run Code Online (Sandbox Code Playgroud)