如果定义了变量,如何在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) 

但仅当您确定可能的值时才执行此操作,因为此测试也匹配 false0''

【讨论】:

'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中执行语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript基础3

对于HTML页面中CSS, JS, HTML的加载与执行过程的简单分析

JavaScript精华

JavaScript 执行环境及作用域

Python全栈-JavaScriptJavaScript变量的作用域

地理定位功能中的 JavaScript 变量范围