如何检查某项功能是否已定义?
答案 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
}
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 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');
}