JavaScript
JavaScript 是动态类型、原型继承的编程语言,1995 年由 Brendan Eich 用十天设计而成,如今是唯一一种浏览器原生语言,也是服务端与工具链场景的通用选择。语言本身只定义语法与类型规则,事件循环、文件系统等能力由运行时提供——浏览器和 Node.js开发 是它的两大运行时。
提示
JavaScript 的知识主线:先掌握语言基础(JavaScript语法),再理解底层规则(作用域与闭包)与异步写法(异步编程),配合文本处理(正则表达式),最后进入两大运行时——浏览器端(DOM与BOM)与 Node.js 生态(Node.js开发、npm包管理)落地工程实践。
语言基础
JavaScript语法 是入门第一课:7 种原始类型与对象、var/let/const 的声明差异、== 与 === 的类型转换陷阱、函数声明与箭头函数、数组与对象的常用操作、原型链与 class 语法糖、CommonJS 与 ES Module 两套模块体系。
核心机制
作用域与闭包 是 JavaScript 的底层规则:var 是函数作用域且存在变量提升,let/const 是块级作用域并有暂时性死区;普通函数的 this 指向调用者,箭头函数的 this 指向定义处;闭包 = 函数 + 定义时的环境,它是数据私有化、函数工厂、柯里化的基础,也是循环闭包问题的根源。
异步编程 是 JavaScript 最核心的特性。从早期的回调函数到 Promise 再到 async/await,异步编程模式经历了三代演进:回调地狱是多层嵌套导致的代码可读性问题,Promise 通过链式调用和不可变状态解决嵌套,async/await 则让异步代码看起来像同步代码。Promise.all 并发与 eventproxy、async 库的流程控制,解决了多个异步任务的依赖编排。
正则表达式 收录了从基础语法到 JavaScript 用法的完整速查:字符类、量词、锚点、捕获组,配合 match/replace/test 三个方法,覆盖表单校验、日志解析、批量替换等常见场景,并提示了贪婪匹配与回溯灾难的陷阱。
浏览器端
DOM与BOM 是浏览器运行时的基础:DOM 把 HTML 解析成对象树,用选择器定位元素、修改内容与样式;事件按"捕获 → 目标 → 冒泡"三阶段传播,事件委托利用冒泡减少绑定;BOM 提供 location/history/storage 等窗口能力,fetch 是原生的 Promise 式网络请求 API。
Node.js 运行时
JavaScript 在浏览器里只能操作 DOM;要读写文件、开网络服务,需要运行时提供的系统能力。Node.js开发 基于 Chrome V8 引擎,用事件循环(timers → poll → check → close)驱动非阻塞 I/O,让 JavaScript 在服务端和工具链场景落地——代码规范、错误处理与性能测试(benchmark)构成工程实践的最后一公里。
npm包管理 是 Node.js 生态的依赖管理基础:语义化版本(主.次.补丁)约定升级规则,^ 与 ~ 前缀划定自动升级边界,package.json 声明"想要什么"、lock 文件锁定"实际装了什么"。
应用场景
Express 是 Node.js 生态中最流行的 Web 框架,通过中间件模式处理请求。中间件按照注册顺序依次执行,每个中间件可以处理请求、修改响应或调用 next() 传递给下一个。body-parser 解析请求体、cookie-parser 解析 Cookie、express-session 管理会话、cors 处理跨域——这些常用中间件组合起来构成了完整的 Web 服务能力。
MongoDB 与 Mongoose 的配合是 Node.js 项目中最常见的数据库方案。Mongoose 通过 Schema 定义数据模型,Model 提供 CRUD 操作接口,支持条件查询、分页、排序等能力。
编程语言 领域里,Java 用多线程模型处理并发、Python 用 GIL 限制并行、JavaScript 用事件循环驱动异步——三种语言是三种并发哲学。JavaScript 同时作为工具链脚本引擎,与 Git、Markdown、Mermaid、IDEA 等 效率工具 协作,是日常开发的高频组合。