如何检查函数是否已定义?

如何检查函数是否已定义?

用于检查函数是否存在的Javascript函数。

使用jQuery.isFunction(),您可以测试一个参数来检查它是否是(a)定义的,(b)是否为“function”类型。 既然你要求使用jQuery,这个function就会让你觉得好玩。

 jQuery.isFunction(YourFunction) 

如果你不想出于任何原因使用jQuery,这里有一个基于Idealog代码的准系统函数,它将检查变量是否是类型function

 function isFunction(fn){ return typeof fn === 'function' } 

有时您已经知道它是一个函数,并且为了优化,没有理由重新检查它的类型,在这种情况下,这里只是检查variable [可能是函数]是否被定义的函数

 function isDefined(foo){ return foo !== 'undefined' } 

如何使用这些function

使用jQuery:

 function foo(){} if(jQuery.isFunction(foo)) alert('This is a function'); 

使用上面提供的任何非jQuery Javascript函数。 根据使用环境,这些function可能是可靠的,也可能是不可靠的。 请参阅以下内容

 function foo(){} if(isFunction(foo)) alert('is of type function'); if(isDefined(foo)) alert('if this is a function, it is defined'); 

检查undefined和使用jQuery.isFunction

 if (typeof myfunc !== 'undefined' && $.isFunction(myfunc)) { //do something } 

资源

jQuery.isFunction()是否优越?

根据Kyle Florence的 jQuery.isFunction() ,在某些情况下它可能更胜一筹。 在使用jQuery方法的某些边缘情况下特别有用,请参阅他的解释 。

在某些浏览器的某些情况下,事物被错误地返回为“函数”类型,或者事实上函数的事物作为另一种类型返回。 您可以在此处看到几个测试用例: https : //github.com/jquery/jque …

一个例子:

var obj = document.createElement(“object”);

// Firefox说这是一个函数类型的obj; // =>“function”

请记住,这些主要是边缘情况,但是$ .isFunction的原因只是对某个函数是积极的(这对于jQuery库本身来说非常重要,对你的代码来说可能不是那么重要)。

感谢patrick dw指出Kyles文章。 (Patrick DW删除了他的帐户)

来自jQuery.com

注意:从jQuery 1.3开始,浏览器提供的函数(如alert()和DOM元素方法(如getAttribute())不能保证在Internet Explorer等浏览器中被检测为函数。

像这样:

 if (typeof myFunc != 'undefined') { // Assign myFunc } 

不要只针对undefined测试,这不是常量,可以重新分配。

 if (myFunc !== undefined) { // myFunc is defined foo(); } 

要么

 if (myFunc === undefined) { // myFunc is not defined qux(); } 
 if (typeof(functionName) == 'function') { } 

typeof返回字符串,因此您可以使用JavaScript typeof运算符来查找JavaScript变量的类型。

 if ( typeof(youerFunctionName) === 'undefined' ) { console.log('undefined'); } 
 if ([function] != undefined) { [do stuff] } 

你也可以使用jQuery的isFunction()来检查它。

假设您的函数名为func

 if (func) { // Function is already defined (or at least something is defined there) } else { // Function is not defined } 

试试这个

 /*********************************/ if(typeof(callback) == 'function') /*********************************/ 

这是一个有效的例子

 function test(){} if(typeof test != "undefined") // function is allready defined 

这是我用来检查函数是否已经定义的内容:

 if ( typeof(myFunc()) === 'undefined' ) { console.log('myFunc undefined'); } else { console.log('myFunc defined'); }