55utah / markdown_blogs

markdown 博客

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2021-02-22 学习

55utah opened this issue · comments

  1. 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结果
  1. optional chaining AND Nullish coalescing

optional chaining 可选链操作符

  (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')
   
  1. 其他

发展情况相关

Node 后端框架

目前 Next.js 是开发服务端应用的首选,Hulu,Docker,Netflix 都在用 Next.js

桌面或原生应用

用 JS 编写桌面端应用,最好的框架绝对是 Electron;
但是移动端应用不只React Native; 目前Capacitor也是非常推荐。

  1. 一个V8特性
try catch 内的代码无法被V8编译优化, 最好是提出来作为一个单独函数。
const run = () => {}
try{
   run();
} catch(){}