如何判断是否定义了JavaScript函数
时间:2020-03-05 18:59:31 来源:igfitidea点击:
如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) { alert(text); if( callback != null ) callback(); }
但这让我
callback is not a function
未定义回调时发生错误。
解决方案
回答
typeof callback === "function"
回答
尝试:
if (typeof(callback) == 'function')
回答
typeof(callback) == "function"
回答
尝试:
if (!(typeof(callback)=='undefined')) {...}
回答
function something_cool(text, callback){ alert(text); if(typeof(callback)=='function'){ callback(); }; }
回答
if (callback && typeof(callback) == "function")
请注意,如果回调是undefined,null,null,0或者false,则回调本身将为false。与null
相比,过于具体。
回答
当前所有的答案都使用文字字符串,如果可能的话,我宁愿不要在我的代码中使用文字字符串(并且提供有价值的语义含义以进行引导):
function isFunction(possibleFunction) { return typeof(possibleFunction) === typeof(Function); }
就个人而言,我尝试减少代码中徘徊的字符串数量。
同样,虽然我知道typeof
是一个运算符而不是一个函数,但是使用使它看起来像后者的语法几乎没有什么害处。
回答
if ('function' === typeof callback) ...
回答
如果未定义变量,则那些用于判断是否实现函数的方法也会失败,因此我们使用了更强大的功能来支持接收字符串:
function isFunctionDefined(functionName) { if(eval("typeof(" + functionName + ") == typeof(Function)")) { return true; } } if (isFunctionDefined('myFunction')) { myFunction(foo); }