3

可能重复:
如何检查 javascript 中未定义的变量
确定 javascript 对象是否具有给定属性

在我的 beforeSend 函数中,我有这个

$.myloader.show();

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

$.myloader.show();给我错误 $.myloader 不存在

我该怎么做

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

6 回答 6

5

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

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

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

if ($.myloader) {

但只有在您确定可能的值时才这样做,因为此测试也匹配false, 0''.

于 2012-10-11T07:06:55.320 回答
0

您可以按照以下方式进行...

if(typeof $.myloader != 'undefined')
{    // your code here.  }; 
于 2012-10-11T07:09:06.287 回答
0

未定义的值是“假的”,并在 if 语句中评估为假,因此您只需要:

if( $.myloader )
    $.myloader.show();
于 2012-10-11T07:16:13.030 回答
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();
}
于 2012-10-11T07:19:24.977 回答
0

您可以更短地执行此操作:

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

或者:

$.myloader.show() || console.log('fail');
于 2012-10-11T07:21:20.543 回答
0

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

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

第一个操作数(在 && 之前)称为警卫。但是有些人认为这不够可读和安全,因此您可能想要使用该if (typeof ...)解决方案。

于 2012-10-11T08:00:29.947 回答