如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
如何判断JavaScript中的函数是否已定义?
我想做这样的事情
function something_cool(text, callback) {
alert(text);
if( callback != null ) callback();
}
但是它得到了一个
回调不是函数
未定义回调时发生错误。
当前回答
大多数(如果不是所有)前面的答案都有调用该函数的副作用
以下是最佳实践
你有函数
函数myFunction() { var x = 1; } 直接测试的方法
/ /直接的方式 if((typeof window.myFunction)=='function') alert('myFunction是函数') 其他的 alert('myFunction未定义'); 使用字符串,因此只能在一个位置定义函数名
/ / byString var strFunctionName = ' myFunction ' if((typeof window[strFunctionName])=='function') Alert (s+' is function'); 其他的 警报(s+'未定义');
其他回答
function something_cool(text, callback){
alert(text);
if(typeof(callback)=='function'){
callback();
};
}
一行的解决方案:
function something_cool(text, callback){
callback && callback();
}
如果希望重新定义函数,最好使用函数变量,因为函数是全局定义的,无论它们出现在哪里。
创建一个新函数,调用之前同名的函数:
A=function() {...} // first definition
...
if (typeof A==='function')
oldA=A;
A=function() {...oldA()...} // new definition
Try:
if (!(typeof(callback)=='undefined')) {...}
typeof(callback) == "function"