-
深入学习 JavaScript 系列(二):This 关键字
1. 关于 thisThis 关键字是 JavaScript 中最复杂的机制之一,它是一个很特别的关键字,被自动定义在所有函数的作用域中。但是即使是非常有经验的 JavaScript 开发者也很难说清楚它到底指向什么。在缺乏对 This 清晰认知的情... -
深入学习 JavaScript 系列(二):闭包
闭包是 JavaScript 这门语言中一个非常重要但又难以掌握,近乎神话的概念。关于闭包的深入理解,我们借用一下 Crockford 的话:“魔术师的幕后藏着一个人,我们将要揭开它的伪装。” 首先请牢记一个秘诀:JavaScript 中闭包无处不在... -
深入学习 JavaScript 系列(一):作用域
1. 什么是作用域?几乎所有的编程语言最基本的功能之一就是能够存储变量中的值,并且能在之后对这个值进行访问和修改。正是这种储存和访问变量的值的能力将状态引入到了程序中。 但是将变量引入程序会引起几个有意思的问题,也是需要我们认真思考的:这些变量住在哪... -
一次线上白屏事故排查引发的前端静态资源缓存的思考
1. 背景最近遇到了一个线上白屏的故障,客户反映网站白屏,没有 Loading 状态,也没有任何可以交互的 UI。尝试使用无痕模式可以正常打开网页。这个情况在客户的电脑上偶尔出现,复现概率并不高,奇怪的是我们自己的电脑尝试了很多次并没有出现这个问题。... -
细说 Flex 布局
1. 什么是 Flexbox?Flexbox 是“Flexible Box Layout”的缩写。它是一个 CSS 布局模型,可以简化复杂布局的创建。它提供了一种灵活的方式来对齐元素并在容器元素内分配空间。 在 Flexbox 出现之前,创建复杂的布... -
useCallback和闭包如何危害你的程序
最近遇到了一个复杂的内存泄漏的问题,它是由 JavaScript 闭包和 React 的 useCallback 钩子的组合引起的。我花了相当长的时间才弄清楚发生了什么,所以我想分享一下我学到的东西。 我对闭包进行了简短的回顾,但如果您已经熟悉它们在... -
全面理解 Promise 系列(四):异步函数和 await 表达式
JavaScript 的设计初衷是作为底层工具在幕后提供高级语言特性使用。异步函数便是这样的高级语言特性,它让使用 promise 编程更接近于不使用 promise 编程。与其担心如何追踪 promise 及各种处理器,我们不如用异步函数将 pro... -
全面理解 Promise 系列(三):多个 Promise 协同工作
我们有时候希望通过监听多个 Promise 的进展来确定下一步的行动。 JavaScript 提供了几种方法来监听多个 Promise,并以略微不同的方式对它们做出响应。 3.1 Promise.all()Promise.all() 方法可以接受一个... -
全面理解 Promise 系列(二):链式 Promise
到目前为止, Promise 可能看起来只不过是结合回调函数和 setTimeout() 所做的渐进式改进,但其意义远比表面看起来丰富的多。具体地说,我们可以用多种方法将 Promise 链接起来,以实现更复杂的异步功能。 实际上,对then()、c... -
全面理解 Promise 系列(一):Promise 基础
虽然 Promise 通常与异步操作相关,但他其实只是值的“临时占位服务”,该值可能是已知的或更常见的是该值是一个异步操作的结果,所有函数都可以返回一个 Promise ,而不用像以前一样订阅(subscribe)一个事件或传递一个回调(callba...
|