JavaScript 如果 var 存在
Posted
技术标签:
【中文标题】JavaScript 如果 var 存在【英文标题】:JavaScript if var exists 【发布时间】:2012-01-21 14:43:09 【问题描述】:我想要我的代码,以便如果存在特定的 var,它将执行一个操作,否则它将被忽略并继续前进。我的代码的问题是,如果特定的 var 不存在会导致错误,可能会忽略 javascript 代码的其余部分。
例子
var YouTube=EpicKris;
if ((typeof YouTube) != 'undefined' && YouTube != null)
document.write('YouTube:' + YouTube);
;
【问题讨论】:
Detecting an undefined object property in JavaScript 的可能重复项 【参考方案1】:这很容易......你可以通过两种方式做到这一点
var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"]
if( YouTube ) //if is null or undefined (Zero and Empty String too), will be converted to false
console.log(YouTube);// exists
else
consol.log(YouTube);// null, undefined, 0, "" or false
或者你可以是
var YouTube = window["EpicKris"] ;// or this["EpicKris"] or objectContainer["EpicKris"]
if( typeof YouTube == "undefined" || YouTube == null ) //complete test
console.log(YouTube);//exists
else
console.log(YouTube);//not exists
【讨论】:
【参考方案2】:这是一个经典的。
使用“window”限定符跨浏览器检查未定义的变量并且不会中断。
if (window.YouTube) // won't puke
// do your code
或者对于花生画廊的铁杆坚持者......
if (this.YouTube)
// you have to assume you are in the global context though
【讨论】:
如果您在不同的范围内,这将不起作用。我不建议这样做。 是的,我还应该提到,以 root 身份执行任何对象限定符说你有一个对象“something = ”然后你检查“something.x”是否也不会呕吐。在编写诸如 window.myThing = window.myThing || 之类的 boostrapping 插件时,我必须这样做。 ;等等等等。IE 是造成这种情况的真正原因,因为 IE 是迟钝的,即使在 v9 中也是如此。 所以如果 var YouTube=EpicKris;不存在那么应该不会发生错误并且应该运行其余的 JavaScript 代码? 这是检查窗口对象上是否存在“YouTube”。如果它存在,它将在假设变量不是 0 或 false 或 null 或 undefined 或其他一些虚假值的情况下执行代码。 +1 在测试全局变量的存在性和非假值时,我经常使用这种方法。如果您要测试的变量是全局变量,它适用于所有浏览器。【参考方案3】:我相信这就是您可能正在寻找的:
if (typeof(YouTube)!=='undefined')
if (YouTube!==undefined && YouTube!==null)
//do something if variable exists AND is set
【讨论】:
【参考方案4】:代码:
var YouTube=EpicKris;
if (typeof YouTube!='undefined')
document.write('YouTube:' + YouTube);
;
为此制定了最佳方法,使用 typeof 检查 var 是否存在。这对我来说非常有效。
【讨论】:
【参考方案5】:try
if(YouTube)
console.log("exist!");
catch(e)
console.log("move one");
当 YouTube 不为 null、未定义、0 或 "" 时有效。
这对你有用吗?
【讨论】:
所以如果 var YouTube=EpicKris;不存在或如果 var YouTube=null;或 YouTube=0;那么应该不会发生错误,并且应该运行其余的 JavaScript 代码? Ups,忽略我的回答,有问题,gurung 的更好! 好吧,我用 gurung 的回答解决了这个问题。现在,只要 YouTube 存在并且不为 null、0 或空字符串,它就会执行代码。这个答案对你有用吗? 部分,但是我正在寻找一个简单的代码来执行此操作,但如果 var YouTube=EpicKris;不存在。 如果变量 EpicKris 不存在?它应该工作。只需在 try/catch 块内进行赋值即可。【参考方案6】:用try/catch
怎么样:
try
//do stuff
catch(e) /* ignore */
【讨论】:
你能给我解释一下吗? 这种方法确实适用于任何地方,但它相当于说“我不知道这是如何工作的,所以我会在那里输入一些代码”。当您知道在大多数情况下基于用户或网络或您无法控制的某些事情可能会失败时,应该执行此操作。通常不是您了解它们为什么会损坏并且在您控制范围内的事情。 @emeraldcode.com:啊,我在想 OP 想知道我如何实现它。我假设他知道try/catch
的用途。不过谢谢你的解释,太好了。我很确定这将帮助 OP 了解发生了什么(假设他以前从未听说过 try/catch
)。以上是关于JavaScript 如果 var 存在的主要内容,如果未能解决你的问题,请参考以下文章