可能重复:
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();
答案 0 :(得分:5)
最通用且最可靠的解决方案是:
if (typeof $.myloader != 'undefined') {
如果您确定您的变量不能保存除函数或未定义的任何内容,您可以使用
if ($.myloader) {
但只有在您确定可能的值时才会执行此操作,因为此测试还匹配false
,0
和''
。
答案 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 ...)
解决方案。