ES11
// 1.在类内部定义私有变量 #+变量
class myClass {
#classdata = '参数1'
getclass(){
console.log(this.#classdata);
}
}
const my_class = new myClass()
my_class.getclass() // 输出 ‘参数1’
console.log(my_class.#classdata); // error : Uncaught SyntaxError: Private field '#classdata' must be declared in an enclosing class
// 2.globalThis
// 不同环境下全局对象名称不一样
// 浏览器全局变量 = windows
// Node全局变量 = global
// web worker = self
// globalThis 能够在不同环境中提供正确的全局对象
// windows 调用alert
window.alert(hello)
if (typeof globalThis.alert === 'function'){
globalThis.alert('hello');
}
// 3.管道运算符
// 一个参数,不断经过函数处理,结果又被当作参数传给下个函数
// 管道运算符的感觉就像一条流水线,从上到下,最后输出结构
const double = (n) => n * 2;
const increment = (n) => n + 1;
// 普通写法
double(increment(double(double(5)))); // 42
// 使用管道操作符 `|>`
5 |> double |> double |> increment |> double; // 42
// 4.动态导入
// 以前先import()导入,再使用
// 新特性可以动态导入使用,因为 import() 会与模块一起返回一个 Promise
const utils = await import('utils');
// 5. BigInt
// 在处理大于 9007199254740991 的数字时应该用 BigInt。 BigInt 在数字末尾用 n 表示。
9_007_199_254_740_991 + 2; // 9007199254740992
BigInt(9_007_199_254_740_991) + BigInt(2) // 9007199254740993n
// 6. matchAll
// 要用正则表达式查找所有的匹配项,可以用 match 来得到所有子字符串
// 既需要子字符串又需要索引,可以用 matchAll 并进行重复匹配
// ES11 用法
const matches = 'Here are some numbers: 3 15 32'.matchAll(/\d+/g);
for (const match of matches) {
console.log(match);
}
// 输出:
// ["3", index: 22, input: "Here are some numbers: 3 15 32", groups: undefined]
// ["15", index: 24, input: "Here are some numbers: 3 15 32", groups: undefined]
// ["32", index: 27, input: "Here are some numbers: 3 15 32", groups: undefined]
// ES11 之前
let regex = /t(e)(st(\d?))/g;
let string = 'test1test2test3';
[...string.matchAll(regex)];
// 或
Array.from(string.matchAll(regex));
// 7.Promise.allSettled
// Promise.all 都成功,才会成功,有一个失败,就返回失败。
// Promise.allSettled, 一旦结束,状态总是fulfilled,不会变成rejected。
// Promise.race 只要有返回值,立马停止其他请求。
// Promise.all 一个请求失败了就会报出异常,Promise.allSettled 不管请求成功或失败都会把结果返回过来
const promises = [Promise.resolve(1), Promise.reject(2)];
const [result1, result2] = await Promise.allSettled(promises); // 1
网友评论