2024-05-10 ES6新特性小總結
技术开发-陈伟健發表於2024-05-10
- ES6,即ECMAScript 2015,js的一個重量級版本,相較於ES5,它更新了一些新特性以及語法。
- let和const關鍵字:用於宣告變數。
- let:定義塊級區域性變數。
- const:定義常量,注意:如果是定義物件或陣列,那麼該物件或陣列中的值可被改變,但引用不能改變。
- 箭頭函式:提供了一種更簡潔的函式宣告語法,並且沒有自己的
this
、arguments
、super
或new.target
。
- 帶引數一般寫法:const a = (a) => console.log(b);
- 沒有引數寫法可省略引數括號:const a = b => console.log(b);
- 帶函式體寫法:const a = () => { console.log(1 + 1); }
- 解構賦值:允許從陣列或物件中提取值,並賦值給不同的變數。
- const arr = {a: 1,b:2}; const {a,b} = arr; console.log(a);
- 模板字串:使用反引號(``)來定義字串,可以在其中嵌入表示式。
- const a = 7; console.log(`123456${a}`);
- 展開運算子(...):可以在函式呼叫、陣列字面量和物件字面量中展開陣列或物件。
- 複製陣列,用它複製陣列可避免淺複製的問題,用法為const arr = [1,2,3];const arr2 = [...arr];這樣就能的到新的複製arr內容的陣列arr2
- 合併兩個陣列:const arr1 = [1]; const arr2 = [2]; const arr3 = [...arr1,arr2]; console.log(arr3); // [1,2,3];
- Symbol型別:新增的一種原始資料型別,用於建立唯一且不可變的識別符號。
- 一種特殊不可變的資料型別,即便值是一樣的,但還是不相等的,表示唯一標識。
- 例:const a = Symbol("一");const b = Symbol("一");console.log(a === b); // false
- 用作物件的key,避免鍵衝突
- Map和Set資料結構:Map是鍵值對的集合,鍵可以是任何型別;Set是值的集合,且值唯一;二者是兩種資料結構。
- Map 物件儲存鍵值對,並且任何值(物件或原始值)都可以作為鍵或值。
- Set 物件允許你儲存任何型別的唯一值,無論是原始值或者是物件引用。
- Proxy物件:用於定義基本操作的自定義行為,如屬性查詢、賦值、列舉、函式呼叫等。
- Reflect物件:提供與物件互動的方法,如定義、檢查、修改物件屬性等。
- 模組化:引入
import
和export
關鍵字,支援ES6模組的匯入和匯出。
- 類(class):基於原型的繼承的語法糖,提供了更接近傳統物件導向程式設計的語法。
- Promise物件:用於處理非同步操作,提供了一種更簡潔的鏈式呼叫方法。
- async/await:基於Promise的非同步程式設計語法糖,使非同步程式碼看起來更像同步程式碼。
- 生成器(Generator):函式的一種特殊型別,可以暫停和恢復其執行。
- 迭代器(Iterator):使物件能夠按一定順序訪問其各個元素。
- 預設引數:允許在函式定義時設定引數的預設值。
- 剩餘引數(Rest parameters):使用
...
語法表示一個函式可以接收任意數量的引數。
- 擴充套件運算子(Spread Operator)與剩餘引數(Rest Operator):兩者在語法上都是
...
,但用途不同。擴充套件運算子用於展開陣列或物件的元素,而剩餘引數用於收集函式引數。
- const arr = [1,2,3,4]; const newArr = [...arr,5]; // [1,2,3,4,5]
- Array.from()方法:將類陣列物件或可迭代物件轉換為真正的陣列。
- Object.assign()方法:將所有可列舉屬性的值從一個或多個源物件複製到目標物件。它將返回目標物件。