如何判断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;
};
这只是我的提示,提示答案:>
其他回答
Try:
if (typeof(callback) == 'function')
if (callback && typeof(callback) == "function")
请注意,如果callback为undefined、null、0或false,则它的计算结果为false。与null的比较过于具体。
使用函数调用的可选链接,你可以做到以下几点:
function something_cool(text, callback) {
alert(text);
callback?.();
}
如果callback是一个函数,它将被执行。
如果callback为null或未定义,则不会抛出错误,也不会发生任何事情。
然而,如果callback是其他东西,例如字符串或数字,TypeError仍然会被抛出。
如果希望重新定义函数,最好使用函数变量,因为函数是全局定义的,无论它们出现在哪里。
创建一个新函数,调用之前同名的函数:
A=function() {...} // first definition
...
if (typeof A==='function')
oldA=A;
A=function() {...oldA()...} // new definition
typeof callback === "function"