js 对象属性的值为 0 判断不了是否存在该属性

比如这个数据

let a={

number:0

}

如果我要判断对象 a 是否存在 number 属性?js 中你可能会这样操作

if(a.number){

console.log (“存在属性了”)

}

事实上他会认定是 false 状态

可以这样

Reflect.has() 方法用于检查一个对象是否拥有某个属性中。

如下:

| 1

2

|

Reflect.has({x: 0}, “x” ); // true

Reflect.has({x: 0}, “y” ); // fals

|

Reflect.has({x: 0}, “toString”``);

  1. in 操作符
    in 运算符用于检查对象是否包含某个属性,如果包含就返回 true,否则返回 false。它的作用和 Reflect.has() 方法相同。

Object.prototype.hasOwnPerporty () 方法
const obj = {p: 1};

console.log(obj.hasOwnProperty( ‘toString’ )); // false

Object.hasOwn () 方法
Object.hasOwn() 方法是 ES2022 新提出的,用于替代 Object.prototype.hasOwnProperty() 的方法。根据 MDN 文档中的介绍:如果指定的对象具有作为其自身属性的指定属性,则 hasOwn() 方法返回 true; 如果该属性是继承的或不存在,则该方法返回 false。

使用方法如下:

| 1

2

3

4

|

const object1 = {prop: ‘exists’ };

console.log(Object.hasOwn(object1, ‘prop’ )); // true

console.log(Object.hasOwn(object1, ‘toString’ )); // false

| 还可以用?. 判断是否存在属性

let a={}

console.log(a.b); // undefined

我们可以和??一起使用

console.log(a.b??“不存在”); // undefined

首先?.作用就是判断这个对象(下的(Object)下的(value)下的(length)是否为null或者undefined,
(如果没有加 ?. ,有的时候会报length是null 的错误,或者说 null length 没有定义,然有了?. 就省去了好多麻烦)
当其中一链为null或者undefined时就返回undefined,这样即使中间缺少一个属性也不会报错
在 JS 中,?? 运算符被称为非空运算符。如果第一个参数不是 null/undefined(译者注:这里只有两个假值,但是 JS 中假值包含:未定义 undefined、空对象 null、数值 0、空数字 NaN、布尔 false,空字符串 ‘’,不要搞混了),将返回第一个参数,否则返回第二个参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初遇你时动了情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值