新版語法 可選鏈操作符( ?. ) 編譯失敗


可選鏈操作符( ?. )允許讀取位於連接對象鏈深處的屬性的值,而不必明確驗證鏈中的每個引用是否有效。?. 操作符的功能類似於 . 鏈式操作符,不同之處在於,在引用為空(nullish ) (null 或者 undefined) 的情況下不會引起錯誤,該表達式短路返回值是 undefined。與函數調用一起使用時,如果給定的函數不存在,則返回 undefined

原因分析

babel版本(6.x)過低

解決方案

升級babel

  1. 升級babel版本至最新(7.x)
npm i @babel/core

npm install babel-upgrade -g 
babel-upgrade --write
  1. 刪除node_modules文件夾

  2. 升級babel相關組件

    img

缺陷:服務器你可能沒有權限

重構函數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)); //原值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM