随笔分类 - (新) JavaScript
摘要:介绍 Pipeline Operator (|>) 是一个很新的 JavaScript 语法,目前还在 TC39 stage 2。 它有啥用呢?我们一起来了解一下 pipe 的前世今生。 参考 YouTube – Javascript's New Pipeline Operator Is Aweso
阅读全文
摘要:前言 XMLHttpRequest 是 JavaScript built-in 的一个 class,用于发送 HTTP 请求,俗称 AJAX。 这几年 XMLHttpRequest 已经逐渐被 Fetch 取代了,只剩下一个功能目前 Fetch 还做不到 -- 获取上传进度,因此 XMLHttpRe
阅读全文
摘要:1e6 等价于 1 + 后面 6 个零 console.log(1e6 1_000_000); 模拟 C# 的 Record Deconstruct class Size implements Iterable<number> { constructor( public width : number
阅读全文
摘要:前言 以前在 Webpack 学习笔记 有稍微介绍过它们。这篇是单独整理版。 参考 一文彻底读懂ESLint 你的ESLint真的需要Prettier吗? 搞懂eslint和prettier等的关系 简单介绍 Prettier 是一个 formatting 工具,目的是方便统一代码格式,比如使用 s
阅读全文
摘要:前言 TypeScript 5.0 之后就可以使用正真的 JS Decorator 了, 从前 experiment 的版本依然可用, 但是不建议继续用, 因为差很远, 一起用会混乱. Decorator 的概念 Python 也有. 它就是设计模式里的装饰者模式, 用来扩展已有的功能. 和 Dec
阅读全文
摘要:前言 group by 是一个很常见的功能,但 JS 却没有 build-in 的方法,一直到 es2024 才有 Object.groupBy (前生是 Array.prototype.group) 和 Map.groupBy (前生是 Array.prototype.groupToMap)。 目
阅读全文
摘要:前言 Temporal API 是 JS 的新东西,用来取代 Date。虽然现在 (2024-09-12) 依然没有任何游览器支持 Temporal API,但它已经是 stage 3 了,而且有完整的 polyfill,所以还是非常推荐大家积极去使用它。 如果你对日期不熟悉,可以先看看这篇文章 -
阅读全文
摘要:前言 排序是很常见的需求. 虽然看似简单, 但其实暗藏杀机. 一不小心就会搞出 Bug 哦. 这篇就来聊聊 JS 的排序. 参考 原生JS数组sort()排序方法内部原理探究 值的比较 js中的localeCompare到底是如何比较的? 直觉和特殊场景 说到排序. 一般人熟悉的情况是这些 直观的
阅读全文
摘要:前言 在上一篇 << 单线程 与 执行机制 >> 中, 我们提到了 Web Worker. 它的诞生是为了解决 JS 主线程执行耗时计算时, 导致 UI 无法及时更新的卡死现象. 它的解决思路是把同步代码异步化. 原本需要 JS 主线程执行的运算, 转交给另一条线程去完成. 这和 setTimeou
阅读全文
摘要:前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler。它需要对 JS 执行机制有点了解,于是就有了这里篇。 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 掘金 – 彻底搞懂JavaScript事件循环 关于JavaScript单线程的一些事 掘金 –
阅读全文
摘要:当 charAt 遇上 Emoji 参考: stackoverflow – How to get first character of string? 我们经常会用 charAt(0) 来获取 first character. 这个用在 ASCII 是完全没有问题的. 但是如果遇到 Unicode
阅读全文
摘要:前言 上一篇 JavaScript – XMLHttpRequest 有提到 XMLHttpRequest 正在被 Fetch 取代,这篇就继续介绍 Fetch 吧。 参考 阮一峰 – Fetch API 教程 Simple Get Request & Response const response
阅读全文
摘要:前言 要看懂这篇请先看下面几篇 JavaScript – Iterator JavaScript – Generator Function JavaScript – Promise JavaScript – 用 Generator 运行异步函数 & await async Async Iterato
阅读全文
摘要:前言 上一篇 JavaScript – Promise 介绍了如何用 JS 编写可读性高的异步函数. 但其实呢, Promise 还不是最好的. 在 es6 之前, Promise 比起回调地狱是好了很多, 但是还不够美. 一堆的 .then 和回调函数. 还不够美. 于是就有了用了 es6 的新特
阅读全文
摘要:前言 我学 Promise 的时候, 那时还没有 es6. 曾经还自己实现过. 但时隔多年, 现在 es6 的 promise 已经很完善了. 这篇作为一个简单的复习. (毕竟我已经 1 年多没有写 JS 了...) 以前写过相关的文章: Javascript Promise 学习(上) Javas
阅读全文
摘要:参考 阮一峰 – Proxy 介绍和使用 Proxy 的作用是代理对象, 消费者不直接使用对象, 而是使用代理对象. 一般上做代理的目的就是想拦截对象访问做一些别的事情. 比如当对象改变以后, 同步 HTML. 基本用法: interface Person { name: string; age?:
阅读全文
摘要:参考 阮一峰 – Generator 函数的语法 介绍 Generator Function 是一种特别的函数, 它让函数有一种分阶段执行的能力. 一般的函数, 你调用它, 它执行所有函数内的代码, 就结束了. 但 Generator 函数不同, 它可以只执行一部分的代码, 然后返回, 接着再继续执
阅读全文
摘要:参考 Set 和 Map 数据结构 Set 介绍和使用 Set 很像 Array, 但其实它是一个 Iteralbe 对象. 用于保存多个值, 而且具有 unique 特性 (1 个 set 里面不会有重复的值) 注意: Set 是通过 加 NaN = NaN 来判断值是否相同. (既不是 也不是
阅读全文
摘要:参考 阮一峰 – Iterator 和 for...of 循环 前言 es6 以后经常可以看到 for...of 的踪迹. 如果你细看会发现它挺神奇的. 不只是 Array 可以被 for...of, 有些对象也可以被 for...of. const array = [1, 2, 3]; conso
阅读全文
摘要:前言 Symbol 是 es6 的特性. 如果只是写业务逻辑代码, 其实是不太会用到的. 如果是做架构, 封装, UI 组件才有需要. 但学它的概念是好的. es6 有需要内置的 Symbol 链接者许多常用的功能, 如果想修改这些 build-in 的东西, 了解 Symbol 是必须的. 参考
阅读全文