JavaScript 自學筆記18

1. 選擇鏈式操作符 ?.

ES2020引入選擇鏈式操作符?.,它允許訪問位於一個對象鏈深處的屬性值,而無需檢查鏈中的每個引用是否爲空null或未定義undefined。一旦鏈中的一個引用是空null或者未定義undefined,則選擇鏈式操作符將直接返回undefined。

(1). 語法

  • objectName ?. propertyName
  • objectName ?. [expression]

如:function getAnimal (id) {

if (id <= 0)

return null;

return {

id: id,

name: 'cat',

address: {

city: 'Auckland',

suburb: 'Mount Roskill'

}};};

let animal = getAnimal(1);

let address = animal ?. address;

// 如果animal是空,或者未定義,那麽選擇鏈操作符 ?. 會直接返回未定義。

// 技術上來説,該操作符的效果等同於:

let address = (animal !== null || animal !== undefined) ? animal.address : undefined;

(2). 叠加運用?.操作符

如:let city = animal ?. address ?. city;

(3). 與空值聯合運算符??聯合使用

如:let name = animal ?. name ?? 'cat';

(4). 在函數調用中,使用選擇鏈式操作符

  • 語法:functionName ?. (args)

如:let cat = {

name: 'Lulu',

greet(name){

console.log( `Hello, ` + name)

}};

cat.greet('lulu'); // 'Hello, lulu'

// 如果調用一個不存在的方法就會報錯

如:cat.eat(); // Uncaught TypeError: cat.eat is not a function

// 爲了避免系統報錯,可以使用選擇鏈式操作符

如:let catEat = cat.eat ?. ();

console.log(catEat); //undefined

// 也可以在回調函數中使用選擇鏈式操作符

如:function getAnimal (id, callback) {

let animal = {

id: id,

name: 'cat'};

callback ?. (animal); // 用來檢查回調函數是否存在

};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值