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

时间:2011-03-01 20:00:27

标签: javascript jquery

如何检查某项功能是否已定义?

10 个答案:

答案 0 :(得分:41)

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

使用jQuery.isFunction(),您可以测试参数以检查它是否是(a)定义的,(b)是“函数”类型。既然你要求使用jQuery,这个函数就会让你感到满意。

jQuery.isFunction(YourFunction)

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

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

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

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

如何使用这些功能

使用jQuery:

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

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

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

检查未定义和使用jQuery.isFunction

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

Source

jQuery.isFunction()是否优越?

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

  

在某些情况下   浏览器,事情都不正确   作为“函数”类型返回,或   实际上功能的东西是   作为另一种类型返回。有   您可以在此处看到几个测试用例:   https://github.com/jquery/jque ...

     

一个例子:

     

var obj =   使用document.createElement( “对象”);

     

// Firefox说这是一个功能   对象类型; // => “功能”

     

请记住,这些都是优势   案件,但$ .isFunction的原因   制作只是为了积极   某事是一种功能(可以   对jQuery非常重要   图书馆本身,也许不是那么多   你的代码)。

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

来自jQuery.com

  

注意:从jQuery 1.3开始,浏览器提供的函数就像alert()   并且不保证像getAttribute()这样的DOM元素方法   在Internet Explorer等浏览器中检测为函数。

答案 1 :(得分:17)

像这样:

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

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

答案 2 :(得分:5)

if (typeof(functionName) == 'function') {
}

答案 3 :(得分:2)

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

if (myFunc === undefined) {
  // myFunc is not defined
  qux();
}

答案 4 :(得分:2)

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

if ( typeof(youerFunctionName) === 'undefined' )
{
    console.log('undefined');
}

答案 5 :(得分:1)

if ([function] != undefined) {
  [do stuff]
}

您也可以使用jQuery's isFunction()进行检查。

答案 6 :(得分:1)

假设您的函数名为func

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

答案 7 :(得分:1)

尝试这个

/*********************************/

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

/*********************************/

这是一个有效的example

答案 8 :(得分:0)

function test(){}

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

答案 9 :(得分:0)

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

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