2021-02-22 学习
55utah opened this issue · comments
阿星 commented
- Promise的三个常用方法
说明
Promise.all([promise1, promise2])
所有promise都fulfilled才会resolve,返回对应的promise结果的数组,否则reject第一个rejected的promise的数据.
Promise.allSettled([promise1, promise2])
所有promise状态变化后resolve,返回对应的promise结果的数组。
Promise.race([promise1, promise2])
只要有一个promise状态改变,就返回对应promise结果
- optional chaining AND Nullish coalescing
optional chaining 可选链操作符
-
操作符为?.
-
a?.b 在引用a为null或者undefined不会发生错误,短路返回undefined; 如果和函数一起使用,给定的函数不存在,则返回 undefined。
(1)
const a = {}
console.log(a.b?.c) // undefined
a.b?.() // undefined
在属性或者函数执行上,可避免报错,通过undefined检测属性和函数是否存在。
(2)当使用方括号与属性名的形式来访问属性时,你也可以使用可选链操作符;可以用来访问数组;可选链不能赋值;
let nestedProp = obj?.['prop' + 'Name'];
const = arr?.[42];
(3)连用可选链操作符
可以连续使用可选链读取多层嵌套结构:
console.log(a?.b?.c?.d?.f) // undefined
(4)另有 Nullish coalescing 空值合并操作符 ??
- 空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。
- 与 || 不同,当为''或0时,也会触发,但是??只在null或者undefined触发。
- 空值合并操作符可以在使用可选链时设置一个默认值。空值合并操作符针对 undefined 与 null 这两个值,可选链式操作符(?.) 也是如此。
- 在这访问属性可能为 undefined 与 null 的对象时,可选链式操作符非常有用。
console.log(a?.b?.c ?? 'hello')
- 其他
发展情况相关
Node 后端框架
目前 Next.js 是开发服务端应用的首选,Hulu,Docker,Netflix 都在用 Next.js
桌面或原生应用
用 JS 编写桌面端应用,最好的框架绝对是 Electron;
但是移动端应用不只React Native; 目前Capacitor也是非常推荐。
- 一个V8特性
try catch 内的代码无法被V8编译优化, 最好是提出来作为一个单独函数。
const run = () => {}
try{
run();
} catch(){}