我使用以下示例来检查对象上是否存在属性。
const payload ={payment:0}
if(payload && payload.payment){
console.log(payload.payment)
}else{
console.log('Issue')
}
但它失败,值为 0(零(。
这个问题是关于一个具有整数键的对象,当键值为零时,大多数其他答案都不起作用。
要查看对象中是否存在属性payment
,您可以编写payload
'payment' in payload
或者,如果您想知道属性是否直接在对象中定义(而不是通过原型继承(,请说
payload.hasOwnProperty('payment')
表达式payload.payment
,当值为 0 时,用作布尔值时将产生false
。这是因为以下值将始终像false
:
0
false
NaN
undefined
null
- 空字符串
这些值的技术术语,作为false
,是"虚假的"。所以因为 0 是假的,所以每当你写!payload.payment
时,这个值实际上是true
的,0
的,false
的。使用上述两种技术之一(in
或hasOwnProperty
(检查缺少的属性。