如果变量定义,如何在javascript中执行语句

时间:2012-10-11 07:06:02

标签: javascript jquery

  

可能重复:
  How to check a not defined variable in javascript
  Determining if a javascript object has a given property

在我的beforeSend功能中,我有这个

$.myloader.show();

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

$.myloader.show();给出了$ .myloader不存在的错误

我该怎么做

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

6 个答案:

答案 0 :(得分:5)

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

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

如果您确定您的变量不能保存除函数或未定义的任何内容,您可以使用

if ($.myloader) {

但只有在您确定可能的值时才会执行此操作,因为此测试还匹配false0''

答案 1 :(得分:0)

你可以这样做......

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

答案 2 :(得分:0)

未定义的值为'falsey',并在if语句中求值为false,因此您只需要:

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

答案 3 :(得分:0)

鉴于jQuery($)是一个对象:

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

如果myloader对象没有直接绑定到jQuery对象,而是通过其中一个原型:

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
    }
}

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

if ('myloader' in $ && 'show' in $.myloader)
{
    $.myloader.show();
}

答案 4 :(得分:0)

您可以更快地完成此操作:

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

或者:

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

答案 5 :(得分:0)

如果你想要它简短,你也可以这样做:

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

第一个操作数(在&&之前)被称为 guard 。然而,有些人认为这不够可读且不够安全,因此您可能希望使用if (typeof ...)解决方案。