如何检查函数是否已定义?
如何检查函数是否已定义?
用于检查函数是否存在的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'); }