如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
当前回答
我正在寻找如何检查一个jQuery函数是否被定义,我没有找到它很容易。
也许你会需要它;)
if(typeof jQuery.fn.datepicker !== "undefined")
其他回答
所有当前的答案都使用一个字面字符串,如果可能的话,我更喜欢在我的代码中没有-这不是(并且提供了有价值的语义含义,引导):
function isFunction(possibleFunction) {
return typeof(possibleFunction) === typeof(Function);
}
就我个人而言,我试图减少代码中存在的字符串数量……
此外,虽然我知道typeof是一个操作符而不是一个函数,但使用语法使它看起来像后者并没有什么害处。
function something_cool(text, callback){
alert(text);
if(typeof(callback)=='function'){
callback();
};
}
我建议以下功能:
function isFunction(name) {
return eval(`typeof ${name} === typeof Function`);
}
我可能会
try{
callback();
}catch(e){};
我知道有一个公认的答案,但没人这么建议。我不确定这是否符合惯用语的描述,但它适用于所有情况。
在较新的JavaScript引擎中,可以使用finally代替。
这对我很有效
if( cb && typeof( eval( cb ) ) === "function" ){
eval( cb + "()" );
}