我如何检查js链var是否存在?任何简单的方法来检查或使用jquery
请看下面的代码:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
// how can i check a var exists ?
// the code bellow will return undefined
// a is undefined
// a.b is undefined --- when a exists, then I need to check a.b
// a.b.c is undefined ...
// a.b.c.d is undefined
// sometimes I need to check if some property of an object exists or is true, and I don't even know the object exists or not
// how can I check it then ?
if(a.b.c.d){
alert('yes');
}
</script>
答案 0 :(得分:4)
使用if条件随着嵌套级别的增加而变得笨拙。 使用此实用程序功能,可以完美地适用于任何级别的嵌套对象。
function checkExists( val, names ) {
names = names.split( '.' );
while ( val && names.length ) { val = val[ names.shift() ]; }
return typeof val !== 'undefined';
}
<强>用法强>
if ( checkExists( a, 'b.c.d' ) ) {
// operate on a.b.c.d
}
答案 1 :(得分:3)
你可以使用布尔运算符:
if(a && a.b && a.b.c && a.b.c.d){
alert('yes');
}
在评论中,有人指出,如果a.b.c.d
是“falsy”(0
,false
,空字符串或空数组,则警告不会打印,即使该属性存在。因此,做到这一点的一个铁定方法是:
if(a && a.b && a.b.c && typeof a.b.c.d !== 'undefined'){
alert('yes');
}
感谢short-circuit evaluation,这不会引发错误。
答案 2 :(得分:2)
if((typeof a !== 'undefined') && (typeof a.b !== 'undefined') && (typeof a.b.c !== 'undefined') && (typeof a.b.c.d !== 'undefined')){
alert('yes');
}
使用&amp;&amp; (AND条件)当单个条件失败时,条件检查立即停止。因此,如果未定义,则不会进行其他检查。
答案 3 :(得分:0)
if (typeof a !== 'undefined' && a.b !== undefined && a.b.c !== undefined && a.b.c.d !== undefined)
alert('yes')
答案 4 :(得分:0)
我认为最好的方法是捕捉错误
ngDriver.FindElement(NgBy.)
答案 5 :(得分:0)
此功能将用于检查是否已定义a.b.c以及检查a.b [1] .d
let isDefined = (baseObject, varChian) => {
try{
if(typeof varChian != "undefined"){
return eval(`baseObject.${varChian} != undefined`);
}
return typeof baseObject != "undefined";
}catch(e){
return false;
}
}
然后您可以通过
调用它isDefined(a, "b[1].c");
isDefined(a);
isDefined(a, "b.c")