js的三个安全运算符

1.可选链操作符 (?.)

        使用场景: 当我们 不确定 一个对象是否存在时,调用对象属性,可以使用该操作符。

const role= {
  name: 'king',
  cat: {
    name: 'lower',
  },
};

const dogName = role.dog?.name; // 可以简单理解为 role.dog ? role.dog.name : undefined
console.log(dogName); // undefined

在Vue中进行使用的场景,这样当cardId这个属性不存在时,代码也不会报错。如果不使用可选链操作符 (?.) ,代码就无法运行,会报无法找到cardId这个属性值,提醒我们没有对该变量进行初始化操作。

<template>
	<div>
		<span>
			<!-- 使用场景: 当我们 不确定 一个对象是否存在时,调用对象属性,可以使用该操作符  -->
			{{user.info?.cardId}}
		</span>
	</div>
</template>

2.空值合并操作符(??)

使用场景: 当需要把 0 或 '' 作为 真 时,使用 ?? ,否则使用 ||

空值合并运算符(??)是一个逻辑运算符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。

const str = null ?? 'default';
console.log(str); // "default"
// 有点类似与 ||(逻辑或),与逻辑或的区别在于 ?? 操作符对 0 和 '' 会判断为真。

?? 和 || 的区别,代码实例如下

const res= 0 ?? 42;
console.log(res); // 0。因为 0 在 ?? 中被判断为 真
----
const res= 0 || 42;
console.log(res); // 42。因为 0 在 || 中被判断为 假
----
const res = '' ?? 66;
console.log(res); // 输出空字符串。 因为''在??中被判断为 真

3.逻辑空赋值(??=)

逻辑空赋值运算符(x ??= y)仅在 x 是空值(null 或 undefined)时对其赋值。 


const res = { num: 99};

res.num ??= 10; // res.num 存在,所以 不赋值
console.log(res.num); //  99

res.example ??= 20; // res.example 不存在,所以 赋值
console.log(res.example); // 20

这个在某些场景下非常有用,比如 为定时器赋值时:


let time = null

function start () {
  // if (!time) {
  //   time = setInterval(() => { ... })
  // }

  time ??= setInterval(() => { ... })
}


据了解在TypeScript中也有一个类似的安全语法,TypeScript语言比JavaScript语言安全很多就是多了很多类型检查机制。JavaScript是弱类型语言,在某些场景下会出现安全问题。

        下面是一个TypeScript的安全语法,该语法可以让password这个变量即可存在也可以不存在。pasword如果存在就是string类型的变量,password不存在代码也不会报错。

password?: string,

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值