JavaScript語(yǔ)法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性匯總

新特性ES6(2015)
1、類(類)
class Man {constructor(name) {this.name = 有課前端網(wǎng);}console() {console.log(this.name);}}const man = new Man( 有課前端網(wǎng));man.console(); // 有課前端網(wǎng)
2、智能(ES模塊)
// 模塊 A 導(dǎo)出一個(gè)方法export const sub = (a, b) = a + b;// 模塊 B 導(dǎo)入使用import { sub } from ./A;console.log(sub(1, 2)); // 3
3、箭頭(箭頭)函數(shù)
const func = (a, b) = a + b;func(1, 2); // 3
4、函數(shù)參數(shù)默認(rèn)值
function foo(age = 25,){ // ...}
5、 模板字符串
const name = 有課前端網(wǎng);const str = `Your name is ${name}`;
6、解構(gòu)架構(gòu)
let a = 1, b= 2;[a, b] = [b, a]; // a 2 b 1
7、延展符
let a = [...hello world]; // [h, e, l, l, o, , w, o, r, l, d]
8、對(duì)象屬性簡(jiǎn)寫(xiě)
const name= fly63前端,const obj = { name };
9、承諾
Promise.resolve().then(() = { console.log(2); });console.log(1);// 先打印 1 ,再打印 2
10、讓和常量
let name = 有課前端網(wǎng);const arr = [];
ES7(2016)
1、 Array.prototype.includes()
[1].includes(1); // true
2、指數(shù)操作符
2**10; // 1024
ES8(2017)
1、異步/等待
終極終極解決方案
async getData(){const res = await api.getTableData(); // await 異步任務(wù)// do something}
2、Object.values()
Object.values({a: 1, b: 2, c: 3}); // [1, 2, 3]
3、 Object.entries()
Object.entries({a: 1, b: 2, c: 3}); // [[a, 1], [b, 2], [c, 3]]
4、字符串填充
// padStarthello.padStart(10); // hello// padEndhello.padEnd(10) hello
5、函數(shù)參數(shù)列表允許結(jié)尾
規(guī)定也一樣,職能規(guī)定與規(guī)則和結(jié)尾的逗號(hào),保持一致。
6、Object.getOwnPropertyDescriptors()
如果對(duì)象的所有自身屬性獲取一個(gè)空,則如果沒(méi)有返回對(duì)象。
7、SharedArrayBuffer對(duì)象
/**** @param {*} length 所創(chuàng)建的數(shù)組緩沖區(qū)的大小,以字節(jié)(byte)為單位。* @returns {SharedArrayBuffer} 一個(gè)大小指定的新 SharedArrayBuffer 對(duì)象。其內(nèi)容被初始化為 0。*/new SharedArrayBuffer(10)
8、原子對(duì)象
Atomics 對(duì)象提供了一組靜態(tài)方法,用于對(duì) SharedArrayBuffer 對(duì)象進(jìn)行原子操作。
ES9(2018)
1、徒勞
await可以和for...的循環(huán)使用,以某種方式運(yùn)行異步操作
async function process(array) {for await (let i of array) {// doSomething(i);}}
2、 Promise.finally()
Promise.resolve().then().catch(e = e).finally();
3、Rest/Spread 屬性
const values = [1, 2, 3, 5, 6];console.log( Math.max(...values) ); // 6
4、正則導(dǎo)演組
const reg = /(year[0-9]{4})-(month[0-9]{2})-(day[0-9]{2})/;const match = reg.exec(2021-02-23);
5、正則表達(dá)式相反聲明
(=p)、(=p) p 前面(位置)、p 后面(位置)(!p)、(!p) 除了 p 前面(位置)、除了 p 后面(位置)
6、正則表達(dá)式dotAll模式
正則表達(dá)式中點(diǎn)。除匹配回車外的任何單字符,標(biāo)記改變這種行為,允許行終止符的出現(xiàn)。
/hello.world/.test(hello\nworld); // falseES10(2019)
1、Array.flat()和Array.flatMap()
平坦的()
[1, 2, [3, 4]].flat(Infinity); // [1, 2, 3, 4]
平面圖()
[1, 2, 3, 4].flatMap(a = [a**2]); // [1, 4, 9, 16]
2、String.trimStart()和String.trimEnd()
去除字符串首尾字符
3、String.prototype.matchAll
const raw_arr = test1 test2 test3.matchAll((/t(e)(st(\d))/g));const arr = [...raw_arr];
4、Symbol.prototype.description
Symbol(description).description; // description
5、 Object.fromEntries()
// 通過(guò) Object.fromEntries, 可以將 Map 轉(zhuǎn)化為 Object:const map = new Map([ [foo, bar], [baz, 42] ]);console.log(Object.fromEntries(map)); // { foo: bar, baz: 42 }
6、任選捕獲
在 ES10 之前,我們是這樣異常的監(jiān)護(hù)人:
try {// tryCode} catch (err) {// catchCode}
這里的err是必須的參數(shù),在ES10可以省略這個(gè)參數(shù)。
ES11(2020)
1、空值合并操作符(空值處理)
表達(dá)式在的左邊求價(jià)值,未定義或返回其性質(zhì)。
let user = {u1: 0,u2: false,u3: null,u4: undefinedu5: ,}let u2 = user.u2 用戶2 // falselet u3 = user.u3 用戶3 // 用戶3let u4 = user.u4 用戶4 // 用戶4let u5 = user.u5 用戶5 //
2、可選鏈(任選鏈)
用戶檢測(cè)寶寶的孩子
let user = {}let u1 = user.childer.name // TypeError: Cannot read property name of undefinedlet u1 = user.childer.name // undefined
3、Promise.allSettled
const promise1 = Promise.resolve(3);const promise2 = 42;const promise3 = new Promise((resolve, reject) = reject(我是失敗的Promise_1));const promise4 = new Promise((resolve, reject) = reject(我是失敗的Promise_2));const promiseList = [promise1,promise2,promise3, promise4]Promise.allSettled(promiseList).then(values={console.log(values)});
4、進(jìn)口()
導(dǎo)入導(dǎo)入
5、新基本數(shù)據(jù)類型 BigInt
任意匹配的概率
6、globalThis
瀏覽器:window
工人:自己
節(jié)點(diǎn):全局
ES12(2021)
1、全部替換
const str = hello world;str.replaceAll(l, ); // heo word
2、Promise.any
const promise1 = new Promise((resolve, reject) = reject(我是失敗的Promise_1));const promise2 = new Promise((resolve, reject) = reject(我是失敗的Promise_2));const promiseList = [promise1, promise2];Promise.any(promiseList).then(values={console.log(values);}).catch(e={console.log(e);});
3、弱引用
4、邏輯和形式表現(xiàn)
a ||= b//等價(jià)于a = a || (a = b)a = b//等價(jià)于a = a (a = b)a = b//等價(jià)于a = a (a = b)
5、數(shù)字字符
數(shù)字間隔性符,可以在數(shù)字之間創(chuàng)建可視化分隔符,通過(guò)_下劃線來(lái)分割數(shù)字,使數(shù)字化可計(jì)算。
const money = 1_000_000_000;//等價(jià)于const money = 1000000000;1_000_000_000 === 1000000000; // true
本文完~
學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()

評(píng)論
圖片
表情
