【学习 JavaScript】 JavaScript 教程 JavaScript 简介 JavaScript 用法 JavaScript Chrome 中运行 JavaScript 输出 JavaScript 语法 JavaScript 语句 JavaScript 注释 JavaScript 变量 JavaScript 数据类型 JavaScript 对象 JavaScript 函数 JavaScript 作用域 JavaScript 事件 JavaScript 字符串 JavaScript 字符串模板 JavaScript 运算符 JavaScript 比较 JavaScript 条件语句 JavaScript switch 语句 JavaScript for 循环 JavaScript while 循环 JavaScript break 和 continue 语句 JavaScript typeof JavaScript 类型转换 JavaScript 正则表达式 JavaScript 错误 JavaScript 调试 JavaScript 变量提升 JavaScript 严格模式 JavaScript 使用误区 JavaScript 表单 JavaScript 表单验证 JavaScript 验证 API JavaScript 保留关键字 JavaScript this JavaScript let 和 const JavaScript JSON JavaScript void JavaScript 异步编程 JavaScript Promise JavaScript 代码规范 JS 函数 JavaScript 函数定义 JavaScript 函数参数 JavaScript 函数调用 JavaScript 闭包 JS 类 JavaScript 类 JavaScript 类继承 JavaScript 静态方法 JS HTML DOM DOM 简介 DOM HTML DOM CSS DOM 事件 DOM EventListener DOM 元素 HTMLCollection 对象 NodeList 对象 JS 高级教程 JavaScript prototype JavaScript Number 对象 JavaScript String JavaScript Date(日期) JavaScript Array(数组) JavaScript Boolean(布尔) JavaScript Math(算数) JavaScript RegExp 对象 JS 浏览器BOM JavaScript Window JavaScript Window Screen JavaScript Window Location JavaScript Window History JavaScript Navigator JavaScript 弹窗 JavaScript 计时事件 JavaScript Cookie JS 库 JavaScript 库 JavaScript 测试 jQuery JavaScript 测试 Prototype JS 实例 JavaScript 实例 JavaScript 对象实例 JavaScript 浏览器对象实例 JavaScript HTML DOM 实例 JavaScript 总结 JS 参考手册

JS 高级教程学习笔记

1. 闭包

1.1 什么是闭包?

闭包指的是在函数内部定义的函数,并且该内部函数可以访问到外部函数的变量和参数,即使外部函数已经执行完毕并返回了,内部函数依然可以访问这些变量。

1.2 闭包的作用

闭包可以用于创建私有变量和方法,以及实现柯里化等高级功能。

1.3 闭包的实例

javascriptCopy Code
function createCounter() { let count = 0; return function() { count++; console.log(count); }; } const counter1 = createCounter(); counter1(); // 输出 1 counter1(); // 输出 2 const counter2 = createCounter(); counter2(); // 输出 1

在上述代码中,我们定义了一个 createCounter 函数,它返回一个内部函数,该函数可以访问 createCounter 中的局部变量 count。通过多次调用 createCounter 返回的内部函数,我们就创建了多个计数器,它们互不干扰,并且每个计数器都可以独立地进行计数。

2. Promise

2.1 什么是 Promise?

Promise 是一种用于处理异步操作的对象,它可以将异步操作转化为同步操作的形式,从而更加方便地管理异步代码流程。

2.2 Promise 的状态

Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。只有在 pending 状态时才可以转化为 fulfilledrejected 状态,一旦状态发生转化,就不能再次改变。

2.3 Promise 的实例

javascriptCopy Code
function getData() { return new Promise((resolve, reject) => { setTimeout(() => { const data = Math.random(); if (data > 0.5) { resolve(data); } else { reject(new Error('Data too small')); } }, 1000); }); } getData() .then(data => console.log(`Data generated: ${data}`)) .catch(error => console.error(error));

在上述代码中,我们定义了一个 getData 函数,它返回一个 Promise 对象。当异步操作完成后,我们可以根据操作的结果调用 resolvereject 方法来更新 Promise 的状态。通过使用 thencatch 方法,我们可以处理异步操作成功或失败时返回的结果,并且链式调用多个 Promise 对象形成 Promise 链。