如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
当前回答
function something_cool(text, callback){
alert(text);
if(typeof(callback)=='function'){
callback();
};
}
其他回答
这对我很有效
if( cb && typeof( eval( cb ) ) === "function" ){
eval( cb + "()" );
}
typeof callback === "function"
如果变量没有定义,那些判断函数是否实现的方法也会失败,所以我们使用了更强大的支持接收字符串的方法:
function isFunctionDefined(functionName) {
if(eval("typeof(" + functionName + ") == typeof(Function)")) {
return true;
}
}
if (isFunctionDefined('myFunction')) {
myFunction(foo);
}
如果callback()在函数中不只调用一次,你可以初始化参数以便重用:
callback = (typeof callback === "function") ? callback : function(){};
例如:
function something_cool(text, callback) {
// Initialize arguments
callback = (typeof callback === "function") ? callback : function(){};
alert(text);
if (text==='waitAnotherAJAX') {
anotherAJAX(callback);
} else {
callback();
}
}
限制是它将始终执行回调参数,尽管它是未定义的。
试试这个:
callback instanceof Function