如何判断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 isFunction(possibleFunction) {
return typeof(possibleFunction) === typeof(Function);
}
就我个人而言,我试图减少代码中存在的字符串数量……
此外,虽然我知道typeof是一个操作符而不是一个函数,但使用语法使它看起来像后者并没有什么害处。
其他回答
if (callback && typeof(callback) == "function")
请注意,如果callback为undefined、null、0或false,则它的计算结果为false。与null的比较过于具体。
所有当前的答案都使用一个字面字符串,如果可能的话,我更喜欢在我的代码中没有-这不是(并且提供了有价值的语义含义,引导):
function isFunction(possibleFunction) {
return typeof(possibleFunction) === typeof(Function);
}
就我个人而言,我试图减少代码中存在的字符串数量……
此外,虽然我知道typeof是一个操作符而不是一个函数,但使用语法使它看起来像后者并没有什么害处。
这对我很有效
if( cb && typeof( eval( cb ) ) === "function" ){
eval( cb + "()" );
}
我正在寻找如何检查一个jQuery函数是否被定义,我没有找到它很容易。
也许你会需要它;)
if(typeof jQuery.fn.datepicker !== "undefined")
如果希望重新定义函数,最好使用函数变量,因为函数是全局定义的,无论它们出现在哪里。
创建一个新函数,调用之前同名的函数:
A=function() {...} // first definition
...
if (typeof A==='function')
oldA=A;
A=function() {...oldA()...} // new definition