es9
异步迭代器
Asyncchronous Interator, 异步执行语句 for..await… of
异步生成器 Async generator
特殊对象
next() => {value, done} done 布尔类型
创建一个迭代器
const createIterator = (items) => {
const keys = Object(items)
const len = keys.length;
let pointer = 0;
return {
next() {
const done = pointer>=len;
const value= !done? items[keys[pointer++]: undefined;
},
return { value, done}
}
}
const it1 = createIterator([1,2,3]);
Symbol.iterator for …of …
生成器
Generator 特殊函数 yield 表达式
function * fn() {
console.log(“正常函数我会执行”)
yield 1;
yield 2;
yield 3;
console.log(执行完了)
}
console.log(iteratorFn.next());
// 异步迭代器
区别
同步: {value:””, done:false}
异步: next() => promsie()
Promise.finally();
Rest / Spread
…
对象浅拷贝
正则表达式
const dateStr= “2030-08-01”;
const reg = /[0-9]{4}-[0-9]{4}-[0-9]{2}/
const res = reg.exec(dataStr)
console.dir(res)
ES9 ?
const reg1 = /(?
const res1 = reg1.exec(dataStr)
console.dir(res1)
replace 08-01-2030
const newDate = dateStr.replace(reg1, ${month}-${day}-${year}
)
// 反向断言
// 先行断言
const str = “$123”;
const reg = /\D(?=\d+)/
const result = reg.exec(str);
console.log(result)
后行断言 反向断言 (?<=patterm>)
const reg2 = /(?<=\D>\d+)/;
console.log(reg2.exec(str))
dotAll方式
. 回车符以外的单字符
const str = ‘yi\ndeng’;
console.log(/yi.deng/,test(str));// false
允许行终止符的出现
console.log(/yi.deng/s,test(str));// false
// 汉字匹配
const oldReg=/[\u4e00-\u9fa5]/;
const str = “”
const newReg=/\p{Script=Han}/u;
// 非转译序列的模板字符串
\u unicode转译 \x 十六进制转译
String.row(‘\u{54}’)