第三周(9.30-10.6)学习笔记 24软工陈奕君

学习收获:

1.学习了JavaScript进阶语法,ES6还有异步编程

学习笔记:

ES6:

let:变量

const:常量

var:声明的变量存在变量提升的问题,在变量声明之前就可以访问到变量,可能导致意外的结果

插入变量:通过${}语法,可以在字符串中插入变量。变量会被解析并替换为实际的值。const name = "Alice";

const message = Hello, ${name}!;

console.log(message); // 输出 "Hello, Alice!"

反引号(`)包围:模板字符串必须使用反引号(`)而不是单引号或双引号来包围

解构赋值:const {name, age} = {name: "Alice", age: 20};

剩余:在函数定义时,使用三个点(…)后跟一个参数名称来声明剩余参数

数组:

forEach:遍历整个数组

Array.from:将一个类数组对象或可迭代对象转换成一个真正的数组

const arr1 = Array.from("hello");

console.log(arr1); // 输出: ["h", "e", "l", "l", "o"]

const arr2 = Array.from([1, 2, 3], x => x * 2);

console.log(arr2); // 输出: [2, 4, 6]

箭头函数:参数列表由圆括号包围,后面跟着一个箭头(=>),然后是函数体(可以是一个代码块或一个表达式)

(argument1, argument2, ...) => {

// 函数体

}

异步处理:

Promise:代表一个异步操作的最终完成(成功 fulfilled)或失败(rejected)及其结果值。它是一种封装异步状态和结果的容器。

状态:

pending:初始状态(进行中)。

fulfilled:操作成功完成。

rejected:操作失败。

创建:CONST a = new Promise(function(resolve, reject) => { /* 异步操作 */ })

pedding->初始状态:调用promise时,一开始就呈现出等待状态,遇到resolve或者reject之前,都处于这个状态,且可以改变,但如果确定了状态(fulfilled/reject),则结果将永远不变,不能再次修改

fulfilled->成功状态:在执行了resolve后,promise则会从pedding变成fulfilled,后续会进入.then 的回调函数中,在回调函数的第一个参数函数中可以获取到值

rejected->失败状态:在执行了reject后,promise状态会变成rejected,rejected函数传递的参数,可以在.then的第二个参数函数中获取的到,或者是在.catch获取到,但是如果程序上的错误,得通过.catch函数去拿到失败消息,在.then中是获取不了的

使用 .then(onFulfilled, onRejected) 方法添加处理函数(也可单独用 .catch(onRejected)处理错误 .then() 返回一个新的 Promise,支持链式调用。.finally() 无论成功失败都执行。

一般异常用.catch。拒绝状态用.then

async / await:基于 Promise 的异步编程终极解决方案

本质: async 和 await 是建立在 Promise 之上的语法糖,目的是让异步代码看起来和书写起来更像同步代码,极大提升可读性和可维护性。

async 关键字: 用于声明一个异步函数。async function myAsyncFn() {...}。调用 async 函数总是返回一个 Promise 对象。如果函数内显式返回一个值,该值会被包装成一个 resolved 的 Promise;如果函数内抛出异常,会返回一个 rejected 的 Promise。

await 关键字: 只能在 async 函数内部使用。await promiseExpression;。它会暂停 async 函数的执行,等待后面的 Promise 完成(resolve 或 reject):

如果 Promise 成功 resolve,await 返回其 resolved 的值。

如果 Promise 被 reject,await 会抛出这个异常值(可以使用 try...catch 捕获)。

核心优势:

代码结构完全同步化,告别回调嵌套和 then 链。

使用熟悉的 try...catch 进行错误处理,逻辑更清晰。

控制流(条件判断、循环)写法和同步代码完全一致。

注意: 滥用 await 可能会导致不必要的顺序执行(本该并行的请求变成串行),此时应结合 Promise.all() 等。


第三周(9.30-10.6)学习笔记 24软工陈奕君
http://localhost:8090//archives/di-san-zhou-9.30-10.6-xue-xi-bi-ji-24ruan-gong-chen-yi-jun
作者
陈奕君
发布于
2025年10月08日
许可协议