# JavaScript **Repository Path**: lihongyao/JavaScript ## Basic Information - **Project Name**: JavaScript - **Description**: JavaScript - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-15 - **Last Updated**: 2025-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 概述 前端三大基础(又称 **三大马车**): - **HTML(HyperText Markup Language)** —— **结构层**:用于定义网页的内容和结构(标签)。 - **CSS(Cascading Style Sheets)** —— **渲染层**:用于控制网页的样式和布局。 - **JavaScript** —— **行为层**:用于实现网页的动态交互。 > **补充**:HTML 负责网页的骨架,CSS 负责美化和布局,而 JavaScript 赋予网页交互性,它们共同构成了现代 Web 开发的核心技术。 JavaScript是一种高级编程语言,用于Web开发和创建交互式用户界面。它是一种动态类型语言,意味着变量类型在运行时确定。JavaScript可以在浏览器中运行,也可以在服务器端使用Node.js运行。它具有广泛的应用,包括网页开发、游戏开发、移动应用程序开发等。JavaScript具有易学性和灵活性,是Web开发中必不可少的一部分。 # 为什么学习 JavaScript JavaScript 是目前**最流行**的编程语言之一,被广泛应用于**网页开发、游戏开发、移动应用、后端开发(Node.js)、桌面应用(Electron)**等多个领域。 学习 JavaScript 的优势: 1. **前端开发的核心** —— 现代网页的交互和动态效果几乎都依赖 JavaScript。 2. **生态丰富,前景广阔** —— 拥有 React、Vue、Angular 等强大的前端框架,以及 Node.js 让 JavaScript 也能用于后端开发。 3. **全栈开发** —— 既能编写前端,也能处理后端逻辑,实现一站式开发。 4. **高效提升开发效率** —— 通过现代前端工具(如 Webpack、Vite)和 TypeScript,可以大幅提高开发效率和代码质量。 5. **强大的社区支持** —— JavaScript 拥有庞大的开发者社区和丰富的学习资源,新手学习更容易。 因此,学习 JavaScript 不仅可以帮助我们**更高效地开发网页**,还能拓展到更广泛的领域(如全栈、移动端、小程序等),提升职业竞争力,是前端开发者的必修技能。 # JavaScript 历史 JavaScript 由 **Brendan Eich** 在 **1995 年**为 **Netscape** 公司的浏览器 **Netscape Navigator** 开发,并在短短 **10 天**内完成了第一版。 **发展历程:** - **1995 年** —— **最初命名为 LiveScript**,但由于当时 Java 语言的流行,Netscape 与 Sun Microsystems 合作,将其更名为 **JavaScript**,实际上与 Java 关系不大。 - **1996 年** —— **微软推出 JScript**,用于 IE 浏览器,与 JavaScript 类似,但存在兼容性问题。 - **1997 年** —— **ECMAScript 标准诞生(ES1)**,JavaScript 由 ECMA(欧洲计算机制造商协会)标准化,成为 ECMAScript(ES) - **2009 年** —— **ES5 发布**,新增 JSON 支持、strict mode 等特性。 - **2015 年** —— **ES6(ES2015)发布**,引入 let、const、箭头函数、类、模块化(import/export) 等现代特性。 - **2016 年至今** —— **JavaScript 进入快速发展期**,ES 每年发布新版本(如 ES7、ES8…),同时现代前端框架(React、Vue、Angular)和后端技术(Node.js)让 JavaScript 生态更加成熟。 > **总结**:JavaScript 诞生于 **Web 时代**,最初用于网页交互,如今已成为 **全栈开发** 的核心语言,应用于**前端、后端、桌面应用、移动端、游戏开发**等多个领域,仍在持续进化。 # JavaScript 与 ECMAScript JavaScript 和 ECMAScript 是同一个东西吗?**不完全是。** - **ECMAScript(ES)** 是 JavaScript 的**核心标准**,由 **ECMA 国际**(European Computer Manufacturers Association)制定,规定了 JavaScript 语言的语法和基本功能。 - **JavaScript** 是 ECMAScript 的**实现**之一,并在 ECMAScript 标准的基础上,添加了 **Web API**(如 DOM、BOM)、异步操作(如 setTimeout、fetch)等功能,使其更适用于 Web 开发。 **关系总结**: - **ECMAScript** 规定了 JavaScript 语言的基本语法,如变量、作用域、对象、函数等。 - **avaScript** 遵循 ECMAScript 标准,并扩展了更多的功能(如 DOM 操作、事件处理)。 - **可以认为 JavaScript 是 ECMAScript 的超集**,但并不完全等同于 ECMAScript。 举例: 以下是 ECMAScript 规范内的代码: ```js let name = "JavaScript"; // 变量 const greet = () => `Hello, ${name}`; // 箭头函数 console.log(greet()); // 输出: Hello, JavaScript ``` 但 **DOM 操作** 并不属于 ECMAScript,而是 JavaScript 在浏览器环境中的扩展: ```js document.getElementById("app").innerText = "Hello, JavaScript!"; ``` > **总结**:ECMAScript **定义了 JavaScript 的核心规则**,而 JavaScript 在此基础上发展出了 **更多的功能**,尤其是在 Web 开发中(如 DOM 操作、事件处理)。 # ECMAScript 的历史 **ECMAScript(ES)** 是由 **Ecma 国际**(前身为欧洲计算机制造商协会)制定的**脚本语言标准**,用于规范 JavaScript 语法和功能。 起源: - **1995 年**,Brendan Eich 在 Netscape 开发了一种脚本语言,最初命名为 **LiveScript**。 - 为了借助 Java 的热度,Netscape 将其更名为 **JavaScript**。 - **1997 年**,Netscape 将 JavaScript 提交给 **Ecma 国际** 进行标准化,并发布了 **ECMAScript 1.0**(ES1)。 ECMAScript 发展历程: | **版本** | **发布时间** | **主要特性** | | ----------------- | ------------ | ------------------------------------------------------------ | | **ES1** | 1997 | ECMAScript 诞生,定义 JavaScript 基础语法 | | **ES2** | 1998 | 小幅改进,与 ISO/IEC 16262 规范对齐 | | **ES3** | 1999 | 引入 `try/catch` 异常处理、正则表达式、`JSON` 支持等 | | **ES4 (取消)** | - | 由于意见不统一,ES4 计划被废弃 | | **ES5** | 2009 | 引入 `strict mode`(严格模式)、`JSON`、`Object.defineProperty()`、`Array.prototype.map()` 等 | | **ES6 (ES2015)** | 2015 | 大量更新,包括 `let`、`const`、箭头函数、类(`class`)、`Promise`、`import/export` 模块等 | | **ES7 (ES2016)** | 2016 | `Array.prototype.includes()`、指数运算符 (`**`) | | **ES8 (ES2017)** | 2017 | `async/await`、`Object.entries()`、`Object.values()` | | **ES9 (ES2018)** | 2018 | `Promise.finally()`、`Rest/Spread` 语法扩展 | | **ES10 (ES2019)** | 2019 | `flat()`、`flatMap()`、`Object.fromEntries()` | | **ES11 (ES2020)** | 2020 | 可选链(`?.`)、空值合并(`??`)、动态 `import()` | | **ES12 (ES2021)** | 2021 | `String.prototype.replaceAll()`、逻辑赋值运算符 (`&&=`, `||=`, `??=`) | | **ES13 (ES2022)** | 2022 | `class` 私有字段(`#`)、`top-level await` | > **总结**:ECMAScript 由 **JavaScript 标准化**而来,每年都会推出新版本,为 JavaScript 语言带来更强大的功能,使其在**前端、后端、移动端**等领域不断发展。 # JavaScript 与 Java 的关系 JavaScript 和 Java 是 **完全不同** 的编程语言,它们在 **语法、用途、运行环境** 上都有明显区别。 - **JavaScript** 是一种 **动态** 的 **脚本语言**,主要用于 **网页前端开发**,在浏览器中运行,并由 **HTML、CSS** 共同构建交互式页面。 - **Java** 是一种 **静态** 的 **面向对象编程语言**,广泛用于 **后端开发、桌面应用、移动开发(Android)**,需要 **JVM(Java 虚拟机)** 执行。 为什么 JavaScript 里有 “Java”? JavaScript 最初在 1995 年由 Netscape 公司推出时,名称是 **LiveScript**。由于当时 Java 语言非常流行,Netscape 出于 **营销目的**,与 Sun Microsystems(Java 的开发公司)合作,将其更名为 **JavaScript**,但两者本质上并无关系。 # JavaScript 引入方式 在网页开发中,可以通过多种方式引入 JavaScript 代码,主要有以下几种: ## 内联(行内) 直接在 HTML 标签的 onclick、onmouseover 等事件属性中写 JavaScript 代码。 ```html ``` ✅ **优点**:适用于简单的交互事件。 ❌ **缺点**:代码可读性差,不利于维护,不推荐使用。 ## 内部(嵌入式) 在 \