跳至主要內容
async/await

在 JavaScript 异步编程领域,async/await 是 ES2017 引入的关键特性,它为处理 Promise 提供了更简洁直观的语法糖。通过 async 函数和 await 表达式,开发者能够以接近同步代码的方式编写异步逻辑,极大地提升了代码可读性和开发效率。

async 函数基础

async 函数定义

async 关键字用于声明一个异步函数。当函数被标记为 async 时,它将返回一个 Promise 对象,无论函数内部是否明确使用 return 语句:

async function fetchData() {
  // 异步操作
}

fetchData().then(data => console.log(data)); // 使用.then()方法处理结果

王泽权大约 2 分钟JavaScriptJavaScript
深拷贝&浅拷贝

JS 数据类型

JavaScript 是一种动态类型的语言,这意味着变量可以在程序执行期间更改其数据类型。JavaScript 提供了多种数据类型,可以大致分为两类:基本数据类型(也称为原始值)和引用数据类型。


基本数据类型

基本数据类型直接存储在栈内存中,它们的值是不可变的,这是因为当我们想从新给基础类型赋值来“改变”它们的值时,实际上是创建了一个新的基本数据类型实例,并将其分配给当前的变量名中。

这样的好处在于,基本数据类型的值不可变,所以在代码中传递这些值时不需要担心它们被意外地修改。这有助于编写无副作用的纯函数,并提高程序的可预测性和稳定性。


王泽权大约 5 分钟JavaScriptJavaScript
Blob 类型

Blob

Blob 是 JavaScript 中的一个对象,其全称为 binary large object(二进制大对象),用于表示一个不可变、原始数据的类文件对象,它本身是不能直接读写所存储的数据,需要借助图 1 中来对它的数据以不同形式的格式进行读取操作。


File

File 对象中存在于浏览器环境中,在 node.js 环境中不存在,并且 Blob 的属性和方法都可以应用于 File 对象上,对此我们可以将 File 对象看作是特殊类型的 Blob,且可以用在任意的 Blob 类型的 context 中,比如: FileReader, URL.createObjectURL, createImageBitmap, 及 XMLHttpRequest.send 都能处理 Blob 和 File 对象。


王泽权大约 7 分钟JavaScriptJavaScript
JavaScript

王泽权小于 1 分钟JavaScriptJavaScript
this 指向

在 JavaScript 中,this 关键字是一个动态上下文引用,其值取决于函数调用时的具体执行环境。理解 this 的指向对于编写高效且易于维护的 JavaScript 代码至关重要。

基本概念

函数调用方式决定 this 指向

全局作用域或默认绑定: 在非严格模式下,如果 this 出现在全局作用域(不在任何函数内部),它通常指向全局对象(浏览器环境中是 window,Node.js 环境中是 global)。 函数调用: 当一个函数作为普通函数直接调用时,this 同样指向全局对象(严格模式下为 undefined)。


王泽权大约 2 分钟JavaScriptJavaScript
回调函数

在 JavaScript 中,回调函数是一种常见的编程模式,它允许我们在一个函数执行完毕后,传递另一个函数作为参数来处理结果或进行后续操作。回调函数是异步编程的核心要素之一,特别是在处理 I/O 操作、事件监听以及控制流程等方面扮演着关键角色。

回调函数的基本概念

回调函数本质上是一个被当作参数传递给另一个函数的函数。当这个外部函数完成其任务后,就会调用传入的回调函数,通常用来通知已完成的状态或者提供处理结果的机会。

在 code - 1 中,getData函数接受一个回调函数作为参数,并在模拟的异步操作完成后调用该回调函数,将数据作为参数传入。


王泽权大约 3 分钟JavaScriptJavaScript
Promise

Promise 是 JavaScript 中处理异步操作的一种标准化解决方案,它提供了一种统一的、链式调用的编程模型来处理异步流程。Promise 对象代表一个异步操作的最终结果(完成或失败),并允许我们以同步风格编写异步代码,从而显著提升了代码的可读性和维护性。

Promise的基本概念

在 JavaScrip t中,Promise 是一个构造函数,通过new Promise(executor)创建实例。执行器(executor)是一个带有两个参数(resolve 和 reject)的函数,分别用于表示异步操作成功或失败时的回调:


王泽权大约 2 分钟JavaScriptJavaScript