关于jquery:如果变量定义,如何在javascript中执行语句

How to execute statement in javascript if variable defined

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to check a not defined variable in javascript
Determining if a javascript object has a given property

在我的beforesend函数中我有这个

$.myloader.show();

但是有些脚本没有这个元素,所以我的这行给了我错误

$.myloader.show();给了我一个错误,$.myloader不存在。

我该怎么做

1
2
if($.myloader exists)
$.myloader.show();


最通用和最可靠的解决方案是:

1
if (typeof $.myloader != 'undefined') {

如果您确定变量不能包含除函数或未定义之外的任何内容,则可以使用

1
if ($.myloader) {

但是,只有当您确定可能的值时才这样做,因为此测试也匹配false0''


如果你想要短一点,你也可以这样做:

1
$.myloader && $.myloader.show();

第一个操作数(在&;&;之前)称为保护。然而,有些人认为这是不够可读和安全的,所以您可能需要使用if (typeof ...)解决方案。


您可以更迅速地执行此操作:

1
$.myloader.show() ? console.log('yep') : console.log('nope');

或:

1
$.myloader.show() || console.log('fail');


鉴于jquery($是一个对象:

1
2
3
4
5
if ($.hasOwnProperty('myloader'))
{
    //should work
    //try: $.hasOwnProperty('fn'), it'll return true, too
}

如果myloader对象不是直接绑定到jquery对象,而是通过它的一个原型:

1
2
3
4
5
6
7
8
if ('myloader' in $)
{
    //works, like:
    if ('hasOwnProperty' in $)
    {//is true, but it's not a property/method of the object itself:
        console.log($.hasOwnProperty('hasOwnProperty'));//logs false
    }
}

您可以用相同的方法检查要使用的方法:

1
2
3
4
if ('myloader' in $ && 'show' in $.myloader)
{
    $.myloader.show();
}


未定义的值是"false",并且在if语句中计算为false,因此您只需要:

1
2
if( $.myloader )
    $.myloader.show();


你可以这样做…

1
2
if(typeof $.myloader != 'undefined')
{    // your code here.  };