Roc*_*uts 5 javascript properties object undefined
假设我有这个:
var person = { "name": "John Doe", "email": "john.doe@example.com" };
Run Code Online (Sandbox Code Playgroud)
该对象只有两个元素,称为name和email。有些人也有一个元素age,但这个特定的人没有。检查这个的最好方法是什么?
if (person.age) { ... }if (person.age != undefined) { ... }if (person.age !== undefined) { ... }if (typeof(person.age) != 'undefined') { ... }if (person.hasOwnProperty('age')) { ... }我知道所有这些都不一样,例如if (person.age),如果age 确实存在但它是falseornull或''or也会失败0。我想知道是否有些不只是完全错误。
请注意,person此处已知为现有对象,但person.age可能存在也可能不存在。
让我们检查这些检查对象是否具有某个元素或属性的方法的可靠性:
如果Boolean(person.age)是,这可能会失败false
if (person.age) { ... }
Run Code Online (Sandbox Code Playgroud)
如果person.age是null或,这可能会失败undefined
if (person.age != undefined) { ... }
Run Code Online (Sandbox Code Playgroud)
如果person.age是,这些可能会失败undefined
if (person.age !== undefined) { ... }
if (typeof(person.age) != 'undefined') { ... }
Run Code Online (Sandbox Code Playgroud)
另一方面,hasOwnProperty()方法返回一个boolean指示对象是否具有作为自己的(非继承的)属性的指定属性。所以它不取决于person.age财产的价值。所以这是这里最好的方式
if (person.hasOwnProperty('age')) { ... }
Run Code Online (Sandbox Code Playgroud)
如果您想进一步检查对象是否具有可迭代的属性(所有属性包括自己的属性以及继承的属性),那么使用for..in循环将为您提供所需的结果。
| 归档时间: |
|
| 查看次数: |
12272 次 |
| 最近记录: |