杰瑞科技汇

javascript标准参考教程

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

javascript标准参考教程-图1
(图片来源网络,侵删)

JavaScript 标准参考教程

前言:为什么学习 JavaScript?

JavaScript 是唯一一门在浏览器、服务器、移动端(通过 React Native, Weex 等几乎所有平台)都能运行的编程语言,它是 Web 开发的基石,也是现代全栈开发的核心技能,掌握 JavaScript,意味着你拥有了构建下一代互联网应用的能力。


第一部分:JavaScript 基础

这是学习 JavaScript 的地基,必须牢固掌握。

第 1 章:简介与环境

  1. 什么是 JavaScript?
    • 历史:诞生于网景公司,最初名为 LiveScript,后借 Java 的名声改名为 JavaScript(与 Java 无关)。
    • 核心特性:一种轻量级的、解释型的、或即时编译型的编程语言。
    • 三大部分:ECMAScript (核心语法)、DOM (文档对象模型,操作网页)、BOM (浏览器对象模型,操作浏览器)。
  2. 运行环境
    • 浏览器控制台:学习和调试的利器,学会使用 console.log(), console.error(), console.table() 等。
    • Node.js:让 JavaScript 脱离浏览器在服务器端运行的环境,是后端开发和现代前端工程化的基础。
  3. 代码编写与执行
    • 在 HTML 中使用 <script>
    • .js 文件中编写,并通过 <script src="..."></script> 引入。
    • 开发工具:VS Code 是目前最流行的选择。

第 2 章:语法、数据类型与变量

  1. 语法
    • 区分大小写Variablevariable 是两个不同的变量。
    • 标识符:变量、函数、属性的命名规则,通常采用驼峰命名法 (camelCase)。
    • 注释:单行注释 () 和多行注释 ()。
    • 语句:以分号 () 结尾是最佳实践,即使在某些情况下可以省略。
  2. 变量
    • var已废弃,存在函数作用域、变量提升、可重复声明等问题。
    • let推荐,块级作用域,不存在变量提升,不可重复声明,是现代 JavaScript 的标准。
    • const推荐,声明常量,一旦赋值就不能修改,它保证的是变量引用的地址不变,对于对象和数组,其内部内容是可以修改的。
  3. 数据类型
    • 原始类型 (Primitive Types)
      • String:字符串,使用单引号、双引号或反引号(模板字符串)。
      • Number:数字,JavaScript 中只有一种数字类型,即 64 位浮点数,没有真正的整数类型。
      • Boolean:布尔值。truefalse
      • Undefined:未定义,声明了变量但未赋值时的默认值。
      • Null:空值,表示“没有值”,是一个有意义的空。
      • Symbol:符号,ES6 引入,创建唯一且不可变的值,常用于对象属性名。
      • BigInt:大整数,ES2025 引入,用于表示任意精度的整数。
    • 引用类型
      • Object:对象的统称,包括普通对象、数组、函数、日期等。
      • Array:数组,一个有序的数据集合。
      • Function:函数,可执行的代码块。
      • Date:日期。
      • RegExp:正则表达式。
    • 类型检测
      • typeof:操作符,返回一个表示数据类型的字符串,注意 typeof null 的结果是 "object",这是一个历史遗留 Bug。
      • instanceof:判断一个对象是否是某个构造函数的实例。
      • Object.prototype.toString.call():最准确、最通用的类型检测方法。

第 3 章:运算符与表达式

  1. 算术运算符:, , , , (取模), (自增), (自减)。
  2. 比较运算符: (宽松相等), (严格相等), (宽松不等), (严格不等), >, <, >=, <=
    • 关键区别: 会在比较前进行类型转换,而 不会。强烈推荐使用 和 ,以避免隐式转换带来的 bug。
  3. 逻辑运算符&& (与), (或), (非)。
    • 短路求值&& 和 会在确定结果后立即停止计算,提高效率。
  4. 位运算符&, , ^, , <<, >>, >>>,在底层处理二进制位,性能极高,但日常开发中较少使用。
  5. 赋值运算符:, , , , 等。
  6. 三元运算符condition ? exprIfTrue : exprIfFalse,是 if...else 语句的简洁写法。

第 4 章:流程控制

  1. 条件语句
    • if...else:最基础的条件判断。
    • switch:基于一个表达式的值来执行不同的代码分支,推荐使用 break 来防止贯穿。
  2. 循环语句
    • for:最常用的循环,适用于已知循环次数的场景。
    • while:在条件为 true 时重复执行代码块。
    • do...while:至少执行一次,然后检查条件。
    • for...in遍历对象的可枚举属性(键名),不要用它来遍历数组。
    • for...of遍历可迭代对象(如数组、字符串、Map、Set)的值,这是现代 JavaScript 中遍历数组和集合的首选。
  3. 跳转语句
    • break:立即退出 switch 或循环。
    • continue:立即跳过当前循环的剩余部分,进入下一次循环。
    • return:从函数中退出,并返回一个值。

第 5 章:函数

  1. 函数声明与函数表达式
    • 函数声明function myFunc() {},存在函数提升,可以在声明之前调用。
    • 函数表达式const myFunc = function() {};,不存在函数提升,必须在表达式之后使用。
    • 箭头函数:ES6 引入,const myFunc = () => {},语法更简洁,不绑定自己的 thisarguments
  2. 参数
    • 默认参数:ES6 允许给函数参数设置默认值。
    • 剩余参数...args 将多个参数收集成一个数组。
    • 展开语法...array 将数组或可迭代对象展开为单个元素。
  3. 作用域
    • 全局作用域:在任何函数外部定义的变量。
    • 函数作用域:在函数内部定义的变量,外部无法访问。
    • 块级作用域:由 (如 if, for, while 代码块) 创建的作用域。letconst 支持块级作用域。
  4. 闭包
    • 核心概念:一个函数能够访问其词法作用域之外的变量,即使外部函数已经返回,内部函数仍然可以访问外部函数的变量。
    • 应用:创建私有变量、数据封装、函数工厂等。

第二部分:进阶特性

掌握了基础后,这些知识将让你写出更健壮、更高效的代码。

第 6 章:对象与原型

  1. 创建对象
    • 字面量:const obj = {}
    • 构造函数:const obj = new Object()
    • Object.create():创建一个新对象,使用现有的对象来提供新对象的 __proto__
  2. 对象操作
    • 访问属性:obj.propobj['prop']
    • 添加/修改属性:obj.newProp = value
    • 删除属性:delete obj.prop
    • 检查属性是否存在:'prop' in obj (会检查原型链) 和 obj.hasOwnProperty('prop') (只检查自身属性)。
  3. 原型与原型链
    • prototype:每个函数都有一个 prototype 属性,它指向一个对象,这个对象将作为该函数创建的所有实例的原型
    • __proto__:每个对象都有一个 __proto__ 属性,它指向创建该对象的构造函数的 prototype 对象,这是对象查找属性的“后备”。
    • 原型链:当访问一个对象的属性时,如果该对象自身没有这个属性,JavaScript 引擎会沿着 __proto__ 向上查找,直到找到该属性或到达 null,这就是“继承”的实现机制。
    • class 语法糖:ES6 引入了 class 关键字,它让 JavaScript 的面向对象编程更清晰,但其底层仍然是基于原型链的。

第 7 章:异步编程

这是 JavaScript 的核心难点,也是现代 Web 开发的灵魂。

javascript标准参考教程-图2
(图片来源网络,侵删)
  1. 同步 vs 异步
    • 同步:代码按顺序一行一行执行,阻塞后续代码。
    • 异步:代码可以启动一个耗时操作(如网络请求),然后继续执行后续代码,等耗时操作完成后再执行回调。JavaScript 是单线程的,通过事件循环实现异步
  2. 回调函数
    • 最基础的异步模式,将一个函数作为参数传递给另一个函数,在异步操作完成后执行它。
    • 回调地狱:当多个异步操作需要按顺序执行时,回调函数会层层嵌套,导致代码难以阅读和维护。
  3. Promise
    • 为了解决回调地狱而生的解决方案,它代表一个异步操作的最终完成或失败。
    • 三种状态pending (进行中), fulfilled (已成功), rejected (已失败)。
    • 核心方法
      • Promise.prototype.then():处理成功结果。
      • Promise.prototype.catch():处理失败错误。
      • Promise.prototype.finally():无论成功失败都会执行。
    • 链式调用:可以清晰地组织异步流程,避免了回调地狱。
  4. async/await
    • ES2025 引入,是基于 Promise 的语法糖,它让异步代码看起来像同步代码一样,极大地提高了可读性。
    • async 关键字用于声明一个异步函数。
    • await 关键字用于暂停 async 函数的执行,等待一个 Promise 的结果。
    • 错误处理:通常使用 try...catch 块来配合 await

第 8 章:ES6+ 新特性

现代 JavaScript 的精髓,让开发更高效、代码更优雅。

  1. letconst:已在前文介绍。
  2. 箭头函数:已在前文介绍。
  3. 模板字符串:使用反引号 ` 包裹,支持变量插值 ${variable} 和多行字符串。
  4. 解构赋值
    • 数组解构const [a, b] = [1, 2];
    • 对象解构const { name, age } = person;
    • 函数参数解构function greet({ name }) { ... }
  5. 默认参数、剩余参数、展开语法:已在前文介绍。
  6. 模块化
    • import / export:ES6 模块是官方标准,每个文件是一个模块,可以显式地导入和导出变量、函数或类。
    • 对比 CommonJS (require/module.exports):Node.js 最初使用的模块系统,ES6 模块是未来趋势。
  7. Set 和 Map
    • Set:一种集合数据结构,成员值唯一,无序。
    • Map:一种键值对集合,键可以是任何类型(不限于字符串)。
  8. for...of 循环:已在前文介绍。
  9. Object 方法增强
    • Object.assign():合并对象。
    • Object.keys(), Object.values(), Object.entries():获取对象的键、值或键值对数组。

第三部分:浏览器环境与 API

这部分知识将 JavaScript 与网页连接起来。

第 9 章:DOM 操作

  1. DOM 是什么?

    文档对象模型,将 HTML 和 XML 文档转换成一个树状结构,每个节点都是一个对象。

  2. 获取元素
    • document.getElementById()
    • document.querySelector()最常用,通过 CSS 选择器获取第一个匹配的元素。
    • document.querySelectorAll():获取所有匹配的元素,返回一个 NodeList
  3. 修改元素
    • element.textContent (安全), element.innerHTML (可解析 HTML,有 XSS 风险)。
    • 属性element.setAttribute(), element.getAttribute(), element.id, element.className
    • 样式element.style.color = 'red', element.classList.add('active')
  4. 创建与插入元素
    • document.createElement('div')
    • element.appendChild(newElement)
    • element.insertBefore(newElement, referenceElement)
  5. 事件处理
    • 事件监听element.addEventListener('click', function() { ... });
    • 事件对象:事件处理函数会收到一个事件对象,包含事件的相关信息(如 target, currentTarget, preventDefault() 等)。
    • 事件冒泡与捕获:描述事件在 DOM 树中传播的机制。addEventListener 的第三个参数可以控制是在捕获阶段还是冒泡阶段监听。

第 10 章:BOM 与 Web API

  1. window 对象
    • 浏览器的全局对象,全局变量和函数都是它的属性和方法。
    • 常用方法
      • window.alert(), window.confirm(), window.prompt():用户交互对话框。
      • window.open(), window.close():控制窗口。
      • window.setTimeout(), window.setInterval():定时器。
  2. location 对象
    • 包含当前 URL 的信息。window.location
    • 常用属性href (整个 URL), hostname, pathname, search (查询字符串)。
  3. history 对象
    • 操作浏览器历史记录。window.history
    • 常用方法history.back(), history.forward(), history.go()
  4. navigator 对象
    • 包含浏览器的信息。window.navigator
    • 常用属性userAgent (浏览器标识), language (语言)。

第四部分:开发工具与最佳实践

第 11 章:开发工具

  1. Chrome DevTools:Web 开发者的瑞士军刀。
    • Elements:检查和修改 DOM 结构与样式。
    • Console:执行代码、查看日志、调试。
    • Sources:设置断点、单步调试代码。
    • Network:分析网络请求,查看加载性能。
    • Performance:记录和分析页面运行时的性能。
  2. 代码编辑器
    • VS Code:强烈推荐,拥有强大的代码补全、调试、Git 集成和海量插件生态。

第 12 章:最佳实践

  1. 代码风格:使用 ESLint 等工具强制执行统一的代码风格(如 Airbnb 风格指南)。
  2. 性能优化
    • DOM 操作优化:减少 DOM 查询和操作,使用 DocumentFragment 批量添加元素。
    • 事件委托:利用事件冒泡,在父元素上监听事件,而不是为每个子元素都添加监听器。
    • 防抖与节流:优化频繁触发的事件(如 resize, scroll, input)。
  3. 安全性
    • XSS (跨站脚本攻击):永远不要直接使用 innerHTML 插入用户输入的内容,使用 textContent 或对输入进行严格的转义。
    • CSRF (跨站请求伪造):使用 CSRF Token 等机制进行防护。
  4. 调试
    • 学会使用 console.log()debugger 语句。
    • 掌握 Chrome DevTools 的断点调试功能,这是定位问题的最强大武器。

第五部分:现代框架与生态

当你掌握了原生 JavaScript 后,可以开始学习框架,以更高效的方式构建复杂的单页应用。

javascript标准参考教程-图3
(图片来源网络,侵删)
  1. 前端框架
    • React:由 Facebook 开发,组件化思想,虚拟 DOM,庞大的生态系统。
    • Vue:由尤雨溪开发,易学易用,渐进式框架,文档友好。
    • Angular:由 Google 开发,一个完整的企业级框架,功能全面但学习曲线较陡。
  2. 构建工具
    • Webpack:模块打包器,处理资源、代码转换、优化等。
    • Vite:新一代前端构建工具,利用浏览器原生 ES 模块支持,提供极速的开发服务器体验。
  3. TypeScript

    JavaScript 的超集,添加了静态类型系统,可以在编译时发现错误,提高代码的可维护性和健壮性,是大型项目的首选。


总结与学习路径建议

  1. 第一阶段 (打地基):扎实掌握 第一部分:JavaScript 基础第二部分:进阶特性,这是你未来能走多远的关键。
  2. 第二阶段 (连接世界):学习 第三部分:浏览器环境与 API,学会用 JS 操作网页。
  3. 第三阶段 (规范与效率):了解 第四部分:开发工具与最佳实践,养成良好的编码习惯。
  4. 第四阶段 (登峰造极):根据项目需求,选择学习 第五部分:现代框架与生态,并深入研究 TypeScript。

推荐资源

  • MDN Web Docs:最权威、最全面的 Web 技术文档,是查阅 API 和概念解释的首选。
  • JavaScript.info:一篇非常棒的、结构清晰的现代 JavaScript 教程。
  • You Don't Know JS (系列书籍):深入 JavaScript 底层原理的必读之作,适合进阶。

祝你学习顺利!

分享:
扫描分享到社交APP
上一篇
下一篇