JavaScript 生成器
生成器基础生成器返回一个迭代器对象 或者说是一个带迭代器的集合 也就是可迭代的对象 123456function* generator() { const a = yield 1; // 暂停,返回 {value: 1, done: false} return a; // 结束,返回 {value: a, done: true}}const gen = generator(); // 返回生成器对象(可迭代对象) 1. next() 方法传参机制(重点补充)核心规则:next(value) 的参数会成为上一个 yield 表达式的返回值 123456789101112131415161718192021function* demo() { console.log("开始"); const step1 = yield "第一步"; // next() 停在这里 console.log("step1:", step1); // step1: 外...
JavaScript 执行期上下文 & 闭包
一、执行上下文(Execution Context)JavaScript 执行代码时,会为每一段可执行代码创建一个 执行上下文,它是代码运行的“环境”。 三种类型 全局执行上下文:脚本启动时创建,全局作用域。 函数执行上下文:每次调用函数时创建。 eval 执行上下文:eval 中执行代码时创建(不常用)。 执行上下文的结构每个执行上下文在运行时包含三个核心部分: 组件 说明 LexicalEnvironment 当前上下文的词法环境(管理 let/const) VariableEnvironment 当前上下文的变量环境(管理 var/函数声明) ThisBinding this 的值 ✅ 简记:执行上下文 = 词法环境 + 变量环境 + this 二、词法环境 vs 变量环境 名称 负责 特点 LexicalEnvironment let、const 有块级作用域,有“暂时性死区”(TDZ) VariableEnvironment var、函数声明 有变量提升,无块级作用域 ⚠️ 注意:函数开始...
JavaScript 迭代器
迭代是什么迭代是指遍历一个集合(如数组、对象、集合等)的所有元素,通常是按照某种顺序访问。迭代器(Iterator)就是提供这种遍历功能的对象。 迭代器 迭代器(Iterator)是一种 对象,它提供了一种标准的方式来 按顺序访问集合中的元素 。迭代器的核心是它实现了 next()方法,每次调用 next()会返回当前元素并移动指针到下一个位置。 迭代器协议规定:要成为一种迭代器,必须满足迭代器对象有一个 next 方法,next 方法返回一个对象,这个对象包含两个属性,value:当前迭代的值(可以是任意类型)和 done:布尔值,表示迭代是否完成。 其实还有 return()方法和 throw() 用来提前结束或者抛出错误 可迭代对象实现了【Symbol.iterator】 方法的对象 ,这个方法返回一个迭代器对象。可迭代对象可以用 for...of 遍历,或通过 ... 展开 示例: 1234567891011121314151617181920// 让一个普通对象变为可迭代对象const myIterableObject = { dat...