私有变量
class School {
#name = ''
constructor(name) {
this.#name = name // 类的内部私有变量写法, 外部无法访问
}
returnPrivateVar() {
return console.log(this.#name);
}
}
let a = new School('Jack')
console.log(a.#name); // Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class
a.returnPrivateVar() // 获取的内部私有变量
合并空运算符
const obj = {
name:'tony'
}
console.log(obj.age ?? 18); // 等价于 console.log(obj.age || 18)
可选链运算符
const person = {
tony:{}
}
console.log(person?.tony?.name?.age); // 输出的结果是 undefined, 而不是抛出异常
console.log(person?.tony?.name?.age ?? 18); // 一般可以配合合并空运算符使用
动态导入
// test.js
export const add = (a, b) => a + b
var a = async () => {
const module = await import('./test.js');
console.log(module.add(1,2)) // 返回的是 add函数 执行后结果
}
a()
globalThis
- 在浏览器端表示
window对象
- 在 node 端表示
global对象
- 在 web worker 表示
self
Promise.allSettled
var a = new Promise((resolve, reject) => {
resolve('a')
})
var b = new Promise((resolve, reject) => {
resolve('b')
})
var c = new Promise((resolve, reject) => {
reject('c')
})
Promise.allSettled([a, b, c]).then(data => {
/*
[
{status: "fulfilled", value: "a"},
{status: "fulfilled", value: "b"},
{status: "rejected", value: "c"}
]
*/
console.log(data)
})
它和 Promise.all 需要全都要请求成功才行, 只要出现一个错误就会立即终止, 把错误信息返回