如何判断 JavaScript 中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但它让我
回调不是函数
未定义回调时出错。
如何判断 JavaScript 中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但它让我
回调不是函数
未定义回调时出错。
typeof callback === "function"
当前所有的答案都使用文字字符串,如果可能的话,我更喜欢在我的代码中不包含它 - 这没有(并提供有value的语义含义,以启动):
function isFunction(possibleFunction) {
return typeof(possibleFunction) === typeof(Function);
}
就个人而言,我尝试减少代码中的字符串数量......
此外,虽然我知道这typeof
是一个运算符而不是一个函数,但使用使其显示为后者的语法几乎没有什么害处。
if (callback && typeof(callback) == "function")
需要注意的是回调(本身)的计算结果为false
,如果是undefined
,null
,0
,或false
。比较null
过于具体。
如果变量未定义,那些判断函数是否已实现的方法也会失败,因此我们使用了支持接收字符串的更强大的方法:
function isFunctionDefined(functionName) {
if(eval("typeof(" + functionName + ") == typeof(Function)")) {
return true;
}
}
if (isFunctionDefined('myFunction')) {
myFunction(foo);
}
尝试:
if (typeof(callback) == 'function')