如果定义了变量,如何在javascript中执行语句[重复]
Posted
技术标签:
【中文标题】如果定义了变量,如何在javascript中执行语句[重复]【英文标题】:How to execute statement in javascript if variable defined [duplicate] 【发布时间】:2012-10-01 18:58:40 【问题描述】:可能重复:How to check a not defined variable in javascriptDetermining if a javascript object has a given property
在我的 beforeSend 函数中我有这个
$.myloader.show();
但是有些脚本没有那个元素,所以我的这一行给了我错误
$.myloader.show();
告诉我 $.myloader 不存在的错误
我该怎么做
if($.myloader exists)
$.myloader.show();
【问题讨论】:
或***.com/questions/858181/…(以及右侧可见的其他链接...) 尝试 some_var.xxx.xxx.xxx x = 't'; catch(e) x = 'f'; console.debug(x); 【参考方案1】:最通用和最可靠的解决方案是:
if (typeof $.myloader != 'undefined')
如果你确定你的变量除了函数或未定义之外不能保存任何东西,你可以使用
if ($.myloader)
但仅当您确定可能的值时才执行此操作,因为此测试也匹配 false
、0
和 ''
。
【讨论】:
与'0'
、[]
等不匹配,逆向测试。
那是不同的东西。 if('0')
将执行。
@pimvdb 你说得对,我有点怀念...
没问题:)。不过,我仍然认为测试是相反的。
@pimvdb 我想我需要第二杯咖啡...在编码之前我不应该这样做...【参考方案2】:
您可以按照以下方式进行...
if(typeof $.myloader != 'undefined')
// your code here. ;
【讨论】:
你肯定想要!==
,而不是!=
@nfechner 似乎不需要:typeof 总是返回一个字符串。【参考方案3】:
未定义的值是 'falsey',并在 if 语句中评估为 false,因此您只需要:
if( $.myloader )
$.myloader.show();
【讨论】:
【参考方案4】:鉴于 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();
【讨论】:
$
实际上是一个函数,但当然也继承自Object
... 最后,一切都可以(除了Object.create(null)
),所以@ 987654329@是。
@FelixKling,是的,它是一个函数,但函数是一流的对象。番茄——番茄,真的【参考方案5】:
您可以更快速地执行此操作:
$.myloader.show() ? console.log('yep') : console.log('nope');
或者:
$.myloader.show() || console.log('fail');
【讨论】:
【参考方案6】:如果你想要它简短,你也可以这样做:
$.myloader && $.myloader.show();
第一个操作数(在 && 之前)称为 guard。但是有些人认为这不够可读和安全,因此您可能希望使用if (typeof ...)
解决方案。
【讨论】:
以上是关于如果定义了变量,如何在javascript中执行语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章
对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析