如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
当前回答
如果你看一下@Venkat Sudheer Reddy Aedama提到的库的来源,下划线,你可以看到:
_.isFunction = function(obj) {
return typeof obj == 'function' || false;
};
这只是我的提示,提示答案:>
其他回答
typeof callback === "function"
function something_cool(text, callback){
alert(text);
if(typeof(callback)=='function'){
callback();
};
}
这对我很有效
if( cb && typeof( eval( cb ) ) === "function" ){
eval( cb + "()" );
}
如果变量没有定义,那些判断函数是否实现的方法也会失败,所以我们使用了更强大的支持接收字符串的方法:
function isFunctionDefined(functionName) {
if(eval("typeof(" + functionName + ") == typeof(Function)")) {
return true;
}
}
if (isFunctionDefined('myFunction')) {
myFunction(foo);
}
所有当前的答案都使用一个字面字符串,如果可能的话,我更喜欢在我的代码中没有-这不是(并且提供了有价值的语义含义,引导):
function isFunction(possibleFunction) {
return typeof(possibleFunction) === typeof(Function);
}
就我个人而言,我试图减少代码中存在的字符串数量……
此外,虽然我知道typeof是一个操作符而不是一个函数,但使用语法使它看起来像后者并没有什么害处。