【发布时间】:2018-03-07 14:17:55
【问题描述】:
假设我有这个:
var person = { "name": "John Doe", "email": "john.doe@example.com" };
该对象只有两个元素,分别称为name 和email。有些人也有一个元素age,但这个特定的人没有。最好的检查方法是什么?
if (person.age) { ... }if (person.age != undefined) { ... }if (person.age !== undefined) { ... }if (typeof(person.age) != 'undefined') { ... }if (person.hasOwnProperty('age')) { ... }
我知道所有这些都不一样,例如如果age 确实 存在,但false 或null 或'' 或0,if (person.age) 也会失败。我想知道是否有些不完全是错误的。
请注意,person 在此处已知为现有对象,但 person.age 可能存在也可能不存在。
【问题讨论】:
-
对我来说
person.hasOwnProperty('age'):) 属性的值是另一回事! -
那么您要准确检查什么?财产存在吗? “具有一定的价值”,如您的问题标题,将是完全不同的事情。
-
我猜
if (typeof person.age == "number")是你要找的。span> -
@Bergi 对,这令人困惑,我将标题中的“值”更改为“元素”。是的,我只是想检查该属性是否存在。
-
@RocketNuts 然后使用
hasOwnProperty或in(取决于您是否关心它是否是自己的 属性)。如果您还关心属性的类型,请使用typeof。
标签: javascript object properties undefined