视野修炼-技术周刊第21期(1)

简介: 🔥强烈推荐1. 2022 State of JS 结果出炉此小节内容较丰富先来看一些JS特性的使用统计数据

🔥强烈推荐

1. 2022 State of JS 结果出炉

此小节内容较丰富

先来看一些JS特性的使用统计数据

image.png

下面介绍一些感觉比较有用的JS特性(根据笔者喜好程度)

Array.prototype.at

可以通过index进行前后查找取值,这个绝对好用

const arr = [1,2,3,4]
arr.at(0) // 1
arr.at(-1) // 4

Array.prototype.findLast

find查找顺序相反,从后往前查符合条件的1项

;[1, 2, 3, 4].findLast((v) => v % 2) // 3

空值合并

这个开发中挺常用 ??,左值为nullundefined时返回右值 x ?? y

下面举个例子 设置默认值的场景

有个这样的对象,期望获取的时候对 null, undefined 场景附默认值

const obj = { n: 0,m: null }

使用对象解构,null 不会正常工作

const { n = 1, m = 2, l = 3 } = obj
// 结果如下
// 0, null, 3

使用 || 运算符的场景,无法准确处理 0,false,''等场景

let { n, m, l } = obj
n = n || 1
m = m || 2
l = l || 3
// 1, 2, 3

现在换成??看一下

let { n, m, l } = obj
n = n ?? 1
m = m ?? 2
l = l ?? 3
// 0, 2, 3

数字分隔符

主要用于表示大数时,阅读更加方便

比如下面这个,一眼看不出多少个 0

const num1 = 1000000000000

咱们用上这个特性表示一下,一下就“数”出来了

const num2 = 1_0000_0000_0000
console.log(num1 === num2) // true

Promise.allSettled

区别于 Promise.all ,其传入的 promise 无论结果(reject/resolve)如何,Promise.allSettled 都会是 resolve 的,其返回的数据结构如下

interface ReturnValue{
  status: 'fulfilled' | 'rejected'
  // 当 status 为 fulfilled 时 返回的数据
  value?: any
  // 当 status 为 rejected 时 返回的数据
  reason?: any
}

下面是个例子

const p1 = Promise.resolve(1)
const p2 = Promise.reject(new Error('2'))
Promise.allSettled([p1, p2]).then((res) => {
  res.forEach((v) =>
    console.log(
      'allSettled',
      v.status,
      v.status === 'fulfilled' ? v.value : v.reason?.message
    )
  )
})
// allSettled fulfilled 1
// allSettled rejected 2

Promise.any

promise.all 作用相反,传入的 promise 只要有一个状态变为 fulfilled 即可,只有所有的都rejected 失败,才需要 catch

下面是fulfilled例子

const p1 = new Promise((resolve) =>
  setTimeout(() => {
    console.log('setTimeout', 'p1')
    resolve('p1')
  }, 200)
)
const p2 = new Promise((resolve) =>
  setTimeout(() => {
    console.log('setTimeout', 'p2')
    resolve('p2')
  }, 100)
)
Promise.any([p1, p2]).then((v) => console.log('any', v))
// setTimeout p2
// any p2
// setTimeout p1

rejected例子

Promise.any([
  Promise.reject(new Error('err1')),
  Promise.reject(new Error('err2'))
]).catch((e) => {
  console.log(e.message)
  console.log(e.errors.map((v) => v.message))
})
// All promises were rejected
// [ 'err1', 'err2' ]

可以用于并发多个异步,取任意一个成功响应的场景

类的私有字段

在 js 里 通常通过 _fieldName 表明私有字段(约定),但实际上也能被访问到

现在可以使用 #fieldName 表明私有字段,类似 TS 中 private fieldName,外部无法访问

下面是个例子

class OldPeople {
  _name = 'xm'
}
class NewPeople {
  #name = 'sl'
}
const p1 = new OldPeople()
console.log(p1['_name']) // 'xm'
const p2 = new NewPeople()
console.log(p1['#name']) // undefined

视野修炼-技术周刊第21期(2):https://developer.aliyun.com/article/1395090?spm=a2c6h.13148508.setting.25.55964f0ez7IHhI

相关文章
|
7月前
|
人工智能 前端开发 小程序
视野修炼-技术周刊第58期
🔥强烈推荐 1. LocalSend - 开源的跨平台文件传送软件 不需要互联网连接,依靠共享 Wifi 分享文件。
|
7月前
|
文字识别 安全 前端开发
视野修炼-技术周刊第57期
🔥强烈推荐 1. Rspress - 基于 Rspack 的高性能静态站点生成器 由 ByteDance Web Infra 团队孵化的一款静态站点生成器,使用 Rspack 进行构建,基于 React 框架进行渲染,支持 MDX 内容开发,主打高性能、简单易用和定制性强。
|
7月前
|
JavaScript 前端开发 API
视野修炼-技术周刊第55期
1. disable-devtool - 一行代码禁用 devTool 如题可以用来防止网站被开发者工具调试,打开开发者工具后,页面会自动重定向到指定的页面
|
7月前
|
移动开发 监控 前端开发
视野修炼-技术周刊第25期
🔥强烈推荐 1. 字节前端监控实践 文章较为详细的讲解了,做一个前端监控系统需要解决的关键问题和解决方案 js 异常监控 捕获异常 堆栈反解与聚合 错误自动分配 性能监控 请求&静态资源监控 低沉本的接入
|
7月前
|
人工智能 JavaScript 开发工具
视野修炼-技术周刊第39期
🔥强烈推荐 1. Transformers.js - 浏览器直接运行AI模型 "抱抱脸"🤗 近期推出了 JS 版SDK,至此可以使用 Node.js 和 浏览器运行提供的AI模型了,大大降低了使用门槛 下面看一下官方示例,在浏览器里的运行效果 只需要在 index.html 加入以下代码 html复制代码
|
7月前
|
前端开发 JavaScript 容器
视野修炼-技术周刊第23期
🔥强烈推荐 1. 看完 Svelte 纪录片才知道它为什么在国外比国内火 文章作者总结了一下 Svelte 纪录片 里的内容,个人感觉有许多描述很精彩的地方 为啥叫Svelte:在 npm 上找个别人没注册过的包实在是太难了😢 他说他想用 LEAN、ZIPPY、FAST、ELEGANT 组成一个单词,于是就组成了 Svelte:
|
7月前
|
Web App开发 人工智能 前端开发
视野修炼-技术周刊第64期
🔥强烈推荐 1. VueDraggablePlus - 祖师爷推荐拖拽库 支持 Vue2 和 Vue3 的拖拽组件库。祖师爷力荐🔥
|
7月前
|
Web App开发 前端开发 JavaScript
视野修炼-技术周刊第53期
🔥强烈推荐 1. rome 停止维护 9 月 2 日,Facebook 出品的前端工具链项目 Rome 宣布停止维护,团队相关成员也被解雇
|
7月前
|
人工智能 Rust JavaScript
视野修炼-技术周刊第62期
🔥强烈推荐 1. Vite5.0 发布! 11 月 16 日,Vite 5.0 正式发布 该版本主要关注API优化,去除过时功能,并解决一些长期存在的问题。 使用了Rollup 4,这在构建性能方面有了很大的提升。 对Node.js的支持进行了调整,现在需要使用Node.js 18+版本。 2. Bubble - README 小组件 该仓库收集各种可以放在 GitHub Profile 和 Readme 上面的小组件。
|
7月前
|
人工智能 自然语言处理 文字识别
视野修炼-技术周刊第63期
🔥强烈推荐 1. 前端量子纠缠效果 本周最火的“前端项目”