├── .DS_Store ├── IMGS ├── .DS_Store ├── bom_location.png ├── bom_screen.png ├── ec_stack.png ├── execution_stack.gif ├── extends.png ├── flowOfEvents.jpeg ├── indexDB_examples.jpg ├── js_life_circles.png ├── location.jpeg ├── nodeTree.png ├── page_renders.jpeg ├── part_10_14.jpeg ├── part_10_15.jpeg ├── part_10_16.jpeg ├── part_10_17.jpeg ├── part_2_1.png ├── part_2_2.jpg ├── part_3_10.jpeg ├── part_3_8.jpeg ├── part_3_9.jpeg ├── part_6_1.jpeg ├── part_6_2.jpeg ├── part_6_3.jpeg ├── part_6_4.jpeg ├── part_6_5.jpeg ├── part_6_6.jpeg ├── part_6_8.png ├── post_message.png ├── prototype-chain.png ├── rAF.gif ├── rect.jpeg ├── scope_word.png ├── useragent.jpg └── 任务队列.png ├── README.md ├── 思维导图 ├── .DS_Store ├── DOM树.xmind ├── 任务队列.xmind ├── 渲染进程.xmind └── 运行生命周期.xmind ├── 示例代码 ├── .DS_Store ├── Basics │ ├── main.js │ └── 数组.js ├── BrowserCaches │ ├── 01_Cookie │ │ ├── Cookies.js │ │ ├── index.html │ │ └── index.js │ ├── 02_localStorage │ │ ├── index.html │ │ └── index.js │ └── 03_indexDB │ │ ├── index.html │ │ ├── index.js │ │ └── utils.js ├── DebounceAndThrottle │ └── index.html ├── DesignPatterns │ ├── 01.工厂模式.js │ ├── 02.单例模式.js │ ├── 03.观察者模式.js │ └── 04.发布订阅者模式.js ├── ESNext │ ├── .DS_Store │ ├── 01.basic │ │ └── index.js │ ├── 02.Proxy │ │ └── index.js │ ├── 03.异步操作 │ │ ├── async-await.js │ │ └── generator.js │ └── modules │ │ ├── index.html │ │ └── main.js ├── Event │ ├── index.html │ └── index.js ├── Eventloops │ └── index.js ├── JSONs │ ├── .vscode │ │ └── settings.json │ ├── index.html │ └── index.js ├── Object │ ├── index.html │ └── index.js ├── PostMessage │ ├── index │ │ ├── .vscode │ │ │ └── settings.json │ │ └── index.html │ └── other │ │ └── index.html ├── Promise │ └── 01.基础用法 │ │ └── index.js ├── doms │ ├── index.html │ └── js │ │ ├── index.js │ │ └── lib.js └── requestAnimationFrame │ ├── index.css │ ├── index.html │ └── index.js ├── 第01章 基础知识.md ├── 第02章 程序结构.md ├── 第03章 数值.md ├── 第04章 字符串.md ├── 第05章 数组.md ├── 第06章 函数.md ├── 第07章 对象.md ├── 第08章 内置对象.md ├── 第09章 DOM.md ├── 第10章 事件.md ├── 第11章 BOM.md ├── 第12章 定时器与延迟函数.md ├── 第13章 浏览器缓存.md ├── 第14章 正则表达式.md ├── 第14章 浏览器持久化.md ├── 第15章 异常处理.md ├── 第16章 事件循环.md ├── 第17章 requestAnimationFrame.md ├── 第18章 设计模式.md └── 第19章 ESNext.md /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/.DS_Store -------------------------------------------------------------------------------- /IMGS/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/.DS_Store -------------------------------------------------------------------------------- /IMGS/bom_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/bom_location.png -------------------------------------------------------------------------------- /IMGS/bom_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/bom_screen.png -------------------------------------------------------------------------------- /IMGS/ec_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/ec_stack.png -------------------------------------------------------------------------------- /IMGS/execution_stack.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/execution_stack.gif -------------------------------------------------------------------------------- /IMGS/extends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/extends.png -------------------------------------------------------------------------------- /IMGS/flowOfEvents.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/flowOfEvents.jpeg -------------------------------------------------------------------------------- /IMGS/indexDB_examples.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/indexDB_examples.jpg -------------------------------------------------------------------------------- /IMGS/js_life_circles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/js_life_circles.png -------------------------------------------------------------------------------- /IMGS/location.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/location.jpeg -------------------------------------------------------------------------------- /IMGS/nodeTree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/nodeTree.png -------------------------------------------------------------------------------- /IMGS/page_renders.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/page_renders.jpeg -------------------------------------------------------------------------------- /IMGS/part_10_14.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_10_14.jpeg -------------------------------------------------------------------------------- /IMGS/part_10_15.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_10_15.jpeg -------------------------------------------------------------------------------- /IMGS/part_10_16.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_10_16.jpeg -------------------------------------------------------------------------------- /IMGS/part_10_17.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_10_17.jpeg -------------------------------------------------------------------------------- /IMGS/part_2_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_2_1.png -------------------------------------------------------------------------------- /IMGS/part_2_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_2_2.jpg -------------------------------------------------------------------------------- /IMGS/part_3_10.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_3_10.jpeg -------------------------------------------------------------------------------- /IMGS/part_3_8.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_3_8.jpeg -------------------------------------------------------------------------------- /IMGS/part_3_9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_3_9.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_1.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_2.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_3.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_4.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_5.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_6.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_6.jpeg -------------------------------------------------------------------------------- /IMGS/part_6_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/part_6_8.png -------------------------------------------------------------------------------- /IMGS/post_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/post_message.png -------------------------------------------------------------------------------- /IMGS/prototype-chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/prototype-chain.png -------------------------------------------------------------------------------- /IMGS/rAF.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/rAF.gif -------------------------------------------------------------------------------- /IMGS/rect.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/rect.jpeg -------------------------------------------------------------------------------- /IMGS/scope_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/scope_word.png -------------------------------------------------------------------------------- /IMGS/useragent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/useragent.jpg -------------------------------------------------------------------------------- /IMGS/任务队列.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lihongyao/JavaScript/5c71708fcb744d50717a7b36f97584e848849eee/IMGS/任务队列.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 概述 2 | 3 | 前端三大基础(又称 **三大马车**): 4 | 5 | - **HTML(HyperText Markup Language)** —— **结构层**:用于定义网页的内容和结构(标签)。 6 | - **CSS(Cascading Style Sheets)** —— **渲染层**:用于控制网页的样式和布局。 7 | - **JavaScript** —— **行为层**:用于实现网页的动态交互。 8 | 9 | > **补充**:HTML 负责网页的骨架,CSS 负责美化和布局,而 JavaScript 赋予网页交互性,它们共同构成了现代 Web 开发的核心技术。 10 | 11 | JavaScript是一种高级编程语言,用于Web开发和创建交互式用户界面。它是一种动态类型语言,意味着变量类型在运行时确定。JavaScript可以在浏览器中运行,也可以在服务器端使用Node.js运行。它具有广泛的应用,包括网页开发、游戏开发、移动应用程序开发等。JavaScript具有易学性和灵活性,是Web开发中必不可少的一部分。 12 | 13 | # 为什么学习 JavaScript 14 | 15 | JavaScript 是目前**最流行**的编程语言之一,被广泛应用于**网页开发、游戏开发、移动应用、后端开发(Node.js)、桌面应用(Electron)**等多个领域。 16 | 17 | 学习 JavaScript 的优势: 18 | 19 | 1. **前端开发的核心** —— 现代网页的交互和动态效果几乎都依赖 JavaScript。 20 | 2. **生态丰富,前景广阔** —— 拥有 React、Vue、Angular 等强大的前端框架,以及 Node.js 让 JavaScript 也能用于后端开发。 21 | 3. **全栈开发** —— 既能编写前端,也能处理后端逻辑,实现一站式开发。 22 | 4. **高效提升开发效率** —— 通过现代前端工具(如 Webpack、Vite)和 TypeScript,可以大幅提高开发效率和代码质量。 23 | 5. **强大的社区支持** —— JavaScript 拥有庞大的开发者社区和丰富的学习资源,新手学习更容易。 24 | 25 | 因此,学习 JavaScript 不仅可以帮助我们**更高效地开发网页**,还能拓展到更广泛的领域(如全栈、移动端、小程序等),提升职业竞争力,是前端开发者的必修技能。 26 | 27 | # JavaScript 历史 28 | 29 | JavaScript 由 **Brendan Eich** 在 **1995 年**为 **Netscape** 公司的浏览器 **Netscape Navigator** 开发,并在短短 **10 天**内完成了第一版。 30 | 31 | **发展历程:** 32 | 33 | - **1995 年** —— **最初命名为 LiveScript**,但由于当时 Java 语言的流行,Netscape 与 Sun Microsystems 合作,将其更名为 **JavaScript**,实际上与 Java 关系不大。 34 | - **1996 年** —— **微软推出 JScript**,用于 IE 浏览器,与 JavaScript 类似,但存在兼容性问题。 35 | - **1997 年** —— **ECMAScript 标准诞生(ES1)**,JavaScript 由 ECMA(欧洲计算机制造商协会)标准化,成为 ECMAScript(ES) 36 | - **2009 年** —— **ES5 发布**,新增 JSON 支持、strict mode 等特性。 37 | - **2015 年** —— **ES6(ES2015)发布**,引入 let、const、箭头函数、类、模块化(import/export) 等现代特性。 38 | - **2016 年至今** —— **JavaScript 进入快速发展期**,ES 每年发布新版本(如 ES7、ES8…),同时现代前端框架(React、Vue、Angular)和后端技术(Node.js)让 JavaScript 生态更加成熟。 39 | 40 | > **总结**:JavaScript 诞生于 **Web 时代**,最初用于网页交互,如今已成为 **全栈开发** 的核心语言,应用于**前端、后端、桌面应用、移动端、游戏开发**等多个领域,仍在持续进化。 41 | 42 | # JavaScript 与 ECMAScript 43 | 44 | JavaScript 和 ECMAScript 是同一个东西吗?**不完全是。** 45 | 46 | - **ECMAScript(ES)** 是 JavaScript 的**核心标准**,由 **ECMA 国际**(European Computer Manufacturers Association)制定,规定了 JavaScript 语言的语法和基本功能。 47 | - **JavaScript** 是 ECMAScript 的**实现**之一,并在 ECMAScript 标准的基础上,添加了 **Web API**(如 DOM、BOM)、异步操作(如 setTimeout、fetch)等功能,使其更适用于 Web 开发。 48 | 49 | **关系总结**: 50 | 51 | - **ECMAScript** 规定了 JavaScript 语言的基本语法,如变量、作用域、对象、函数等。 52 | - **avaScript** 遵循 ECMAScript 标准,并扩展了更多的功能(如 DOM 操作、事件处理)。 53 | - **可以认为 JavaScript 是 ECMAScript 的超集**,但并不完全等同于 ECMAScript。 54 | 55 | 举例: 56 | 57 | 以下是 ECMAScript 规范内的代码: 58 | 59 | ```js 60 | let name = "JavaScript"; // 变量 61 | const greet = () => `Hello, ${name}`; // 箭头函数 62 | console.log(greet()); // 输出: Hello, JavaScript 63 | ``` 64 | 65 | 但 **DOM 操作** 并不属于 ECMAScript,而是 JavaScript 在浏览器环境中的扩展: 66 | 67 | ```js 68 | document.getElementById("app").innerText = "Hello, JavaScript!"; 69 | ``` 70 | 71 | > **总结**:ECMAScript **定义了 JavaScript 的核心规则**,而 JavaScript 在此基础上发展出了 **更多的功能**,尤其是在 Web 开发中(如 DOM 操作、事件处理)。 72 | 73 | # ECMAScript 的历史 74 | 75 | **ECMAScript(ES)** 是由 **Ecma 国际**(前身为欧洲计算机制造商协会)制定的**脚本语言标准**,用于规范 JavaScript 语法和功能。 76 | 77 | 起源: 78 | 79 | - **1995 年**,Brendan Eich 在 Netscape 开发了一种脚本语言,最初命名为 **LiveScript**。 80 | - 为了借助 Java 的热度,Netscape 将其更名为 **JavaScript**。 81 | - **1997 年**,Netscape 将 JavaScript 提交给 **Ecma 国际** 进行标准化,并发布了 **ECMAScript 1.0**(ES1)。 82 | 83 | ECMAScript 发展历程: 84 | 85 | | **版本** | **发布时间** | **主要特性** | 86 | | ----------------- | ------------ | ------------------------------------------------------------ | 87 | | **ES1** | 1997 | ECMAScript 诞生,定义 JavaScript 基础语法 | 88 | | **ES2** | 1998 | 小幅改进,与 ISO/IEC 16262 规范对齐 | 89 | | **ES3** | 1999 | 引入 `try/catch` 异常处理、正则表达式、`JSON` 支持等 | 90 | | **ES4 (取消)** | - | 由于意见不统一,ES4 计划被废弃 | 91 | | **ES5** | 2009 | 引入 `strict mode`(严格模式)、`JSON`、`Object.defineProperty()`、`Array.prototype.map()` 等 | 92 | | **ES6 (ES2015)** | 2015 | 大量更新,包括 `let`、`const`、箭头函数、类(`class`)、`Promise`、`import/export` 模块等 | 93 | | **ES7 (ES2016)** | 2016 | `Array.prototype.includes()`、指数运算符 (`**`) | 94 | | **ES8 (ES2017)** | 2017 | `async/await`、`Object.entries()`、`Object.values()` | 95 | | **ES9 (ES2018)** | 2018 | `Promise.finally()`、`Rest/Spread` 语法扩展 | 96 | | **ES10 (ES2019)** | 2019 | `flat()`、`flatMap()`、`Object.fromEntries()` | 97 | | **ES11 (ES2020)** | 2020 | 可选链(`?.`)、空值合并(`??`)、动态 `import()` | 98 | | **ES12 (ES2021)** | 2021 | `String.prototype.replaceAll()`、逻辑赋值运算符 (`&&=`, `||=`, `??=`) | 99 | | **ES13 (ES2022)** | 2022 | `class` 私有字段(`#`)、`top-level await` | 100 | 101 | > **总结**:ECMAScript 由 **JavaScript 标准化**而来,每年都会推出新版本,为 JavaScript 语言带来更强大的功能,使其在**前端、后端、移动端**等领域不断发展。 102 | 103 | # JavaScript 与 Java 的关系 104 | 105 | JavaScript 和 Java 是 **完全不同** 的编程语言,它们在 **语法、用途、运行环境** 上都有明显区别。 106 | 107 | - **JavaScript** 是一种 **动态** 的 **脚本语言**,主要用于 **网页前端开发**,在浏览器中运行,并由 **HTML、CSS** 共同构建交互式页面。 108 | - **Java** 是一种 **静态** 的 **面向对象编程语言**,广泛用于 **后端开发、桌面应用、移动开发(Android)**,需要 **JVM(Java 虚拟机)** 执行。 109 | 110 | 为什么 JavaScript 里有 “Java”? 111 | 112 | JavaScript 最初在 1995 年由 Netscape 公司推出时,名称是 **LiveScript**。由于当时 Java 语言非常流行,Netscape 出于 **营销目的**,与 Sun Microsystems(Java 的开发公司)合作,将其更名为 **JavaScript**,但两者本质上并无关系。 113 | 114 | # JavaScript 引入方式 115 | 116 | 在网页开发中,可以通过多种方式引入 JavaScript 代码,主要有以下几种: 117 | 118 | ## 内联(行内) 119 | 120 | 直接在 HTML 标签的 onclick、onmouseover 等事件属性中写 JavaScript 代码。 121 | 122 | ```html 123 | 124 | ``` 125 | 126 | ✅ **优点**:适用于简单的交互事件。 127 | 128 | ❌ **缺点**:代码可读性差,不利于维护,不推荐使用。 129 | 130 | ## 内部(嵌入式) 131 | 132 | 在 \ 145 | 146 |
147 | 148 | 149 |