Javascript:检查对象子数组长度,即使未定义对象
我只想在对象的子数组中包含元素时显示一些内容。但有时对象本身没有定义,因此如果Javascript:检查对象子数组长度,即使未定义对象,javascript,arrays,object,if-statement,children,Javascript,Arrays,Object,If Statement,Children,我只想在对象的子数组中包含元素时显示一些内容。但有时对象本身没有定义,因此如果对象或对象。子对象不在作用域中,则此操作失败: if(object.child.length){ alert('hello world'); } 其结果是: Uncaught ReferenceError: object is not defined 因此,我必须添加两个附加的if条件来检查对象及其子对象是否已定义: if(typeof object !== 'undefined'){ if(typ
对象
或对象。子对象
不在作用域中,则此操作失败:
if(object.child.length){
alert('hello world');
}
其结果是:
Uncaught ReferenceError: object is not defined
因此,我必须添加两个附加的if条件来检查对象及其子对象是否已定义:
if(typeof object !== 'undefined'){
if(typeof object.child !== 'undefined'){
if(object.child.length){
alert('hello world');
}
}
}
围绕这一点编写函数也是有问题的:
function isset(value){ ... }
if(isset(object.child.length)({ ... } // <-- still raises error that object is not defined
函数设置(值){…}
如果(isset(object.child.length)({…}/您可以设置一个防护:
if(object && object.child && object.child.length){
上述方法可防止对象
和对象。子对象
是未定义的
或空值
(或任何其他虚假值);它之所以有效,是因为所有非空值
对象引用都是真实的,因此您可以避免对象的详细类型!=“未定义”
form。如果您确信object.child
将存在,则您可能不需要上述两种防护。但是,如果object
存在,则具有这两种防护是无害的
值得注意的是,即使在检索值时,这也很有用,而不仅仅是在测试值时。例如,假设您有(或可能没有!)object.foo
,其中包含您要使用的值
var f = object && object.foo;
如果object
为假(undefined
或null
是典型的情况),则f
将接收假值(undefined
或null
)。如果object
为真值,f
将接收object.foo
的值
|
的方式类似