如何判断JavaScript中的函数是否已定义?

我想做这样的事情

function something_cool(text, callback) {
    alert(text);
    if( callback != null ) callback();
}

但是它得到了一个

回调不是函数

未定义回调时发生错误。


当前回答

如果你看一下@Venkat Sudheer Reddy Aedama提到的库的来源,下划线,你可以看到:

_.isFunction = function(obj) {
  return typeof obj == 'function' || false;
};

这只是我的提示,提示答案:>

其他回答

Try:

if (!(typeof(callback)=='undefined')) {...}

我正在寻找如何检查一个jQuery函数是否被定义,我没有找到它很容易。

也许你会需要它;)

if(typeof jQuery.fn.datepicker !== "undefined")

如果希望重新定义函数,最好使用函数变量,因为函数是全局定义的,无论它们出现在哪里。

创建一个新函数,调用之前同名的函数:

A=function() {...} // first definition
...
if (typeof A==='function')
   oldA=A;
A=function() {...oldA()...} // new definition
typeof(callback) == "function"
if (callback && typeof(callback) == "function")

请注意,如果callback为undefined、null、0或false,则它的计算结果为false。与null的比较过于具体。