可選鏈操作符( ?.
)允許讀取位於連接對象鏈深處的屬性的值,而不必明確驗證鏈中的每個引用是否有效。?.
操作符的功能類似於 .
鏈式操作符,不同之處在於,在引用為空(nullish ) (null
或者 undefined
) 的情況下不會引起錯誤,該表達式短路返回值是 undefined
。與函數調用一起使用時,如果給定的函數不存在,則返回 undefined
。
原因分析
babel版本(6.x)過低
解決方案
升級babel
- 升級babel版本至最新(7.x)
npm i @babel/core
npm install babel-upgrade -g
babel-upgrade --write
-
刪除node_modules文件夾
-
升級babel相關組件
缺陷:服務器你可能沒有權限
重構函數nestedProperty
var array = [
{ a: 0, b: 1, c: 2 },
{ a: 10, b: 11, c: 12 },
{ a: 20, b: 21, c: 22 }
]
var obj = {
a: {
b: {
c: {
d: 5,
arr: array
}
}
}
};
let pop = []
console.log(nestedProperty.get(pop, "length"));
//因`?.`不能使用
console.log(nestedProperty.get(obj, "a.b.c.arr.+.c"));
// # 錯誤
console.log(nestedProperty.get(obj,'+.c')); //undefined
console.log(nestedProperty.get(obj, "a.d.c")); //undefined
console.log(nestedProperty.get(obj)); //原值