Javascript 数值存在JS Check属性

Javascript 数值存在JS Check属性,javascript,ecmascript-6,Javascript,Ecmascript 6,我使用了下面的示例来检查对象上是否存在属性 const payload ={payment:0} if(payload && payload.payment){ console.log(payload.payment) }else{ console.log('Issue') } 但它以0(零)值失败 这个问题是关于一个具有整数键的对象,当键值为零时,大多数其他答案都不起作用。若要查看对象有效负载中是否存在属性付款,可以编写 'payment' in payload

我使用了下面的示例来检查对象上是否存在属性

const payload ={payment:0}

if(payload && payload.payment){
  console.log(payload.payment)
}else{
  console.log('Issue')
}
但它以0(零)值失败


这个问题是关于一个具有整数键的对象,当键值为零时,大多数其他答案都不起作用。

若要查看对象
有效负载中是否存在属性
付款
,可以编写

'payment' in payload
或者,如果您想知道属性是否直接在对象中定义(而不是通过原型继承),可以说

当值为0时,表达式
payload.payment
将在用作布尔值时生成
false
。这是因为以下值的行为总是类似于
false

  • 0
  • false
  • NaN
  • 未定义
  • null
  • 空字符串

这些值的技术术语为“falsy”,充当
false
。因此,因为0是falsy,所以无论何时编写
!payload.payment
,对于
0
而言,此值实际上为
true
,对于其他所有内容而言,此值实际上为
false
。使用上述两种方法之一(
中的
hasOwnProperty
)检查缺少的属性。

您尝试过吗<代码>付款中的“有效载荷”
确实有效。@FlorianWeimer我在
lodash中发现
has
也可以这样做。我在
lodash中发现
has
也可以这样做。
payload.hasOwnProperty('payment')