这份教程将遵循 JavaScript 语言的核心知识体系,从基础到高级,并结合现代开发实践,它不仅仅是 API 的罗列,更侧重于“为什么”和“如何”使用,力求成为一份真正意义上的“标准参考”。

JavaScript 标准参考教程
前言:为什么学习 JavaScript?
JavaScript 是唯一一门在浏览器、服务器、移动端(通过 React Native, Weex 等几乎所有平台)都能运行的编程语言,它是 Web 开发的基石,也是现代全栈开发的核心技能,掌握 JavaScript,意味着你拥有了构建下一代互联网应用的能力。
第一部分:JavaScript 基础
这是学习 JavaScript 的地基,必须牢固掌握。
第 1 章:简介与环境
- 什么是 JavaScript?
- 历史:诞生于网景公司,最初名为 LiveScript,后借 Java 的名声改名为 JavaScript(与 Java 无关)。
- 核心特性:一种轻量级的、解释型的、或即时编译型的编程语言。
- 三大部分:ECMAScript (核心语法)、DOM (文档对象模型,操作网页)、BOM (浏览器对象模型,操作浏览器)。
- 运行环境
- 浏览器控制台:学习和调试的利器,学会使用
console.log(),console.error(),console.table()等。 - Node.js:让 JavaScript 脱离浏览器在服务器端运行的环境,是后端开发和现代前端工程化的基础。
- 浏览器控制台:学习和调试的利器,学会使用
- 代码编写与执行
- 在 HTML 中使用
<script>- 在
.js文件中编写,并通过<script src="..."></script>引入。- 开发工具:VS Code 是目前最流行的选择。
- 在
- 在 HTML 中使用
第 2 章:语法、数据类型与变量
- 语法
- 区分大小写:
Variable和variable是两个不同的变量。 - 标识符:变量、函数、属性的命名规则,通常采用驼峰命名法 (
camelCase)。 - 注释:单行注释 () 和多行注释 ()。
- 语句:以分号 () 结尾是最佳实践,即使在某些情况下可以省略。
- 区分大小写:
- 变量
var:已废弃,存在函数作用域、变量提升、可重复声明等问题。let:推荐,块级作用域,不存在变量提升,不可重复声明,是现代 JavaScript 的标准。const:推荐,声明常量,一旦赋值就不能修改,它保证的是变量引用的地址不变,对于对象和数组,其内部内容是可以修改的。
- 数据类型
- 原始类型 (Primitive Types)
String:字符串,使用单引号、双引号或反引号(模板字符串)。Number:数字,JavaScript 中只有一种数字类型,即 64 位浮点数,没有真正的整数类型。Boolean:布尔值。true和false。Undefined:未定义,声明了变量但未赋值时的默认值。Null:空值,表示“没有值”,是一个有意义的空。Symbol:符号,ES6 引入,创建唯一且不可变的值,常用于对象属性名。BigInt:大整数,ES2025 引入,用于表示任意精度的整数。
- 引用类型
Object:对象的统称,包括普通对象、数组、函数、日期等。Array:数组,一个有序的数据集合。Function:函数,可执行的代码块。Date:日期。RegExp:正则表达式。
- 类型检测
typeof:操作符,返回一个表示数据类型的字符串,注意typeof null的结果是"object",这是一个历史遗留 Bug。instanceof:判断一个对象是否是某个构造函数的实例。Object.prototype.toString.call():最准确、最通用的类型检测方法。
- 原始类型 (Primitive Types)
第 3 章:运算符与表达式
- 算术运算符:, , , , (取模), (自增), (自减)。
- 比较运算符: (宽松相等), (严格相等), (宽松不等), (严格不等),
>,<,>=,<=。- 关键区别: 会在比较前进行类型转换,而 不会。强烈推荐使用 和 ,以避免隐式转换带来的 bug。
- 逻辑运算符:
&&(与), (或), (非)。- 短路求值:
&&和 会在确定结果后立即停止计算,提高效率。
- 短路求值:
- 位运算符:
&, ,^, ,<<,>>,>>>,在底层处理二进制位,性能极高,但日常开发中较少使用。 - 赋值运算符:, , , , 等。
- 三元运算符:
condition ? exprIfTrue : exprIfFalse,是if...else语句的简洁写法。
第 4 章:流程控制
- 条件语句
if...else:最基础的条件判断。switch:基于一个表达式的值来执行不同的代码分支,推荐使用break来防止贯穿。
- 循环语句
for:最常用的循环,适用于已知循环次数的场景。while:在条件为true时重复执行代码块。do...while:至少执行一次,然后检查条件。for...in:遍历对象的可枚举属性(键名),不要用它来遍历数组。for...of:遍历可迭代对象(如数组、字符串、Map、Set)的值,这是现代 JavaScript 中遍历数组和集合的首选。
- 跳转语句
break:立即退出switch或循环。continue:立即跳过当前循环的剩余部分,进入下一次循环。return:从函数中退出,并返回一个值。
第 5 章:函数
- 函数声明与函数表达式
- 函数声明:
function myFunc() {},存在函数提升,可以在声明之前调用。 - 函数表达式:
const myFunc = function() {};,不存在函数提升,必须在表达式之后使用。 - 箭头函数:ES6 引入,
const myFunc = () => {},语法更简洁,不绑定自己的this和arguments。
- 函数声明:
- 参数
- 默认参数:ES6 允许给函数参数设置默认值。
- 剩余参数:
...args将多个参数收集成一个数组。 - 展开语法:
...array将数组或可迭代对象展开为单个元素。
- 作用域
- 全局作用域:在任何函数外部定义的变量。
- 函数作用域:在函数内部定义的变量,外部无法访问。
- 块级作用域:由 (如
if,for,while代码块) 创建的作用域。let和const支持块级作用域。
- 闭包
- 核心概念:一个函数能够访问其词法作用域之外的变量,即使外部函数已经返回,内部函数仍然可以访问外部函数的变量。
- 应用:创建私有变量、数据封装、函数工厂等。
第二部分:进阶特性
掌握了基础后,这些知识将让你写出更健壮、更高效的代码。
第 6 章:对象与原型
- 创建对象
- 字面量:
const obj = {}。 - 构造函数:
const obj = new Object()。 Object.create():创建一个新对象,使用现有的对象来提供新对象的__proto__。
- 字面量:
- 对象操作
- 访问属性:
obj.prop或obj['prop']。 - 添加/修改属性:
obj.newProp = value。 - 删除属性:
delete obj.prop。 - 检查属性是否存在:
'prop' in obj(会检查原型链) 和obj.hasOwnProperty('prop')(只检查自身属性)。
- 访问属性:
- 原型与原型链
prototype:每个函数都有一个prototype属性,它指向一个对象,这个对象将作为该函数创建的所有实例的原型。__proto__:每个对象都有一个__proto__属性,它指向创建该对象的构造函数的prototype对象,这是对象查找属性的“后备”。- 原型链:当访问一个对象的属性时,如果该对象自身没有这个属性,JavaScript 引擎会沿着
__proto__向上查找,直到找到该属性或到达null,这就是“继承”的实现机制。 class语法糖:ES6 引入了class关键字,它让 JavaScript 的面向对象编程更清晰,但其底层仍然是基于原型链的。
第 7 章:异步编程
这是 JavaScript 的核心难点,也是现代 Web 开发的灵魂。

- 同步 vs 异步
- 同步:代码按顺序一行一行执行,阻塞后续代码。
- 异步:代码可以启动一个耗时操作(如网络请求),然后继续执行后续代码,等耗时操作完成后再执行回调。JavaScript 是单线程的,通过事件循环实现异步。
- 回调函数
- 最基础的异步模式,将一个函数作为参数传递给另一个函数,在异步操作完成后执行它。
- 回调地狱:当多个异步操作需要按顺序执行时,回调函数会层层嵌套,导致代码难以阅读和维护。
- Promise
- 为了解决回调地狱而生的解决方案,它代表一个异步操作的最终完成或失败。
- 三种状态:
pending(进行中),fulfilled(已成功),rejected(已失败)。 - 核心方法:
Promise.prototype.then():处理成功结果。Promise.prototype.catch():处理失败错误。Promise.prototype.finally():无论成功失败都会执行。
- 链式调用:可以清晰地组织异步流程,避免了回调地狱。
async/await- ES2025 引入,是基于 Promise 的语法糖,它让异步代码看起来像同步代码一样,极大地提高了可读性。
async关键字用于声明一个异步函数。await关键字用于暂停async函数的执行,等待一个 Promise 的结果。- 错误处理:通常使用
try...catch块来配合await。
第 8 章:ES6+ 新特性
现代 JavaScript 的精髓,让开发更高效、代码更优雅。
let和const:已在前文介绍。- 箭头函数:已在前文介绍。
- 模板字符串:使用反引号
`包裹,支持变量插值${variable}和多行字符串。 - 解构赋值
- 数组解构:
const [a, b] = [1, 2]; - 对象解构:
const { name, age } = person; - 函数参数解构:
function greet({ name }) { ... }
- 数组解构:
- 默认参数、剩余参数、展开语法:已在前文介绍。
- 模块化
import/export:ES6 模块是官方标准,每个文件是一个模块,可以显式地导入和导出变量、函数或类。- 对比 CommonJS (
require/module.exports):Node.js 最初使用的模块系统,ES6 模块是未来趋势。
- Set 和 Map
Set:一种集合数据结构,成员值唯一,无序。Map:一种键值对集合,键可以是任何类型(不限于字符串)。
for...of循环:已在前文介绍。Object方法增强Object.assign():合并对象。Object.keys(),Object.values(),Object.entries():获取对象的键、值或键值对数组。
第三部分:浏览器环境与 API
这部分知识将 JavaScript 与网页连接起来。
第 9 章:DOM 操作
- DOM 是什么?
文档对象模型,将 HTML 和 XML 文档转换成一个树状结构,每个节点都是一个对象。
- 获取元素
document.getElementById()document.querySelector():最常用,通过 CSS 选择器获取第一个匹配的元素。document.querySelectorAll():获取所有匹配的元素,返回一个NodeList。
- 修改元素
element.textContent(安全),element.innerHTML(可解析 HTML,有 XSS 风险)。- 属性:
element.setAttribute(),element.getAttribute(),element.id,element.className。 - 样式:
element.style.color = 'red',element.classList.add('active')。
- 创建与插入元素
document.createElement('div')element.appendChild(newElement)element.insertBefore(newElement, referenceElement)
- 事件处理
- 事件监听:
element.addEventListener('click', function() { ... });。 - 事件对象:事件处理函数会收到一个事件对象,包含事件的相关信息(如
target,currentTarget,preventDefault()等)。 - 事件冒泡与捕获:描述事件在 DOM 树中传播的机制。
addEventListener的第三个参数可以控制是在捕获阶段还是冒泡阶段监听。
- 事件监听:
第 10 章:BOM 与 Web API
window对象- 浏览器的全局对象,全局变量和函数都是它的属性和方法。
- 常用方法:
window.alert(),window.confirm(),window.prompt():用户交互对话框。window.open(),window.close():控制窗口。window.setTimeout(),window.setInterval():定时器。
location对象- 包含当前 URL 的信息。
window.location。 - 常用属性:
href(整个 URL),hostname,pathname,search(查询字符串)。
- 包含当前 URL 的信息。
history对象- 操作浏览器历史记录。
window.history。 - 常用方法:
history.back(),history.forward(),history.go()。
- 操作浏览器历史记录。
navigator对象- 包含浏览器的信息。
window.navigator。 - 常用属性:
userAgent(浏览器标识),language(语言)。
- 包含浏览器的信息。
第四部分:开发工具与最佳实践
第 11 章:开发工具
- Chrome DevTools:Web 开发者的瑞士军刀。
- Elements:检查和修改 DOM 结构与样式。
- Console:执行代码、查看日志、调试。
- Sources:设置断点、单步调试代码。
- Network:分析网络请求,查看加载性能。
- Performance:记录和分析页面运行时的性能。
- 代码编辑器
- VS Code:强烈推荐,拥有强大的代码补全、调试、Git 集成和海量插件生态。
第 12 章:最佳实践
- 代码风格:使用 ESLint 等工具强制执行统一的代码风格(如 Airbnb 风格指南)。
- 性能优化
- DOM 操作优化:减少 DOM 查询和操作,使用
DocumentFragment批量添加元素。 - 事件委托:利用事件冒泡,在父元素上监听事件,而不是为每个子元素都添加监听器。
- 防抖与节流:优化频繁触发的事件(如
resize,scroll,input)。
- DOM 操作优化:减少 DOM 查询和操作,使用
- 安全性
- XSS (跨站脚本攻击):永远不要直接使用
innerHTML插入用户输入的内容,使用textContent或对输入进行严格的转义。 - CSRF (跨站请求伪造):使用 CSRF Token 等机制进行防护。
- XSS (跨站脚本攻击):永远不要直接使用
- 调试
- 学会使用
console.log()和debugger语句。 - 掌握 Chrome DevTools 的断点调试功能,这是定位问题的最强大武器。
- 学会使用
第五部分:现代框架与生态
当你掌握了原生 JavaScript 后,可以开始学习框架,以更高效的方式构建复杂的单页应用。

- 前端框架
- React:由 Facebook 开发,组件化思想,虚拟 DOM,庞大的生态系统。
- Vue:由尤雨溪开发,易学易用,渐进式框架,文档友好。
- Angular:由 Google 开发,一个完整的企业级框架,功能全面但学习曲线较陡。
- 构建工具
- Webpack:模块打包器,处理资源、代码转换、优化等。
- Vite:新一代前端构建工具,利用浏览器原生 ES 模块支持,提供极速的开发服务器体验。
- TypeScript
JavaScript 的超集,添加了静态类型系统,可以在编译时发现错误,提高代码的可维护性和健壮性,是大型项目的首选。
总结与学习路径建议
- 第一阶段 (打地基):扎实掌握 第一部分:JavaScript 基础 和 第二部分:进阶特性,这是你未来能走多远的关键。
- 第二阶段 (连接世界):学习 第三部分:浏览器环境与 API,学会用 JS 操作网页。
- 第三阶段 (规范与效率):了解 第四部分:开发工具与最佳实践,养成良好的编码习惯。
- 第四阶段 (登峰造极):根据项目需求,选择学习 第五部分:现代框架与生态,并深入研究 TypeScript。
推荐资源:
- MDN Web Docs:最权威、最全面的 Web 技术文档,是查阅 API 和概念解释的首选。
- JavaScript.info:一篇非常棒的、结构清晰的现代 JavaScript 教程。
- You Don't Know JS (系列书籍):深入 JavaScript 底层原理的必读之作,适合进阶。
祝你学习顺利!
