跳到主要内容

JavaScript 知识体系概览

什么是 JavaScript?

JavaScript 是一门动态、弱类型的解释性编程语言,最初由 Brendan Eich 在 1995 年用 10 天时间设计出来,目的是让网页"动起来"。今天的 JavaScript 早已超越浏览器脚本语言的定位——它可以写服务端(Node.js)、移动端(React Native)、桌面端(Electron)和 AI 应用。

JavaScript 的独特之处在于:

  • 单线程 + 异步模型:通过事件循环(Event Loop)在单线程中处理并发,而不是像 Java 那样使用多线程
  • 原型继承:不同于传统面向对象语言的"类继承",JavaScript 使用原型链(Prototype Chain)实现继承
  • 函数是一等公民:函数可以赋值给变量、作为参数传递、作为返回值——这是闭包和高阶函数的基础
  • 动态类型:变量不需要声明类型,可以随时改变类型——但这也是很多 bug 的根源

为什么 JavaScript 是前端面试的核心?

JavaScript 是前端面试中考察最深入、覆盖面最广的领域。面试官不仅考你 API 的使用,更考你对底层运行机制的理解:

一道经典的面试题就能串联多个知识点:

for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// 输出什么?为什么?怎么修复?

这道题同时考察了:var 的函数作用域(不是块级作用域)、闭包(setTimeout 回调引用外部变量)、Event Loop(setTimeout 是宏任务,等同步代码执行完才运行)。


核心知识点概览

作用域与闭包——JavaScript 三座大山之一

作用域决定了变量在哪里可以访问。JavaScript 使用词法作用域(静态作用域),即变量的作用域在代码编写时就确定了,而不是运行时。var 是函数作用域,let/const 是块级作用域,这是 ES6 最重要的改进之一。

闭包是 JavaScript 最核心的概念之一——当一个函数能够"记住"并访问它被创建时所在的作用域,即使这个函数在其他地方执行,就形成了闭包。闭包是防抖节流、模块模式、柯里化等技术的基础。

原型与继承——理解 JS 面向对象的本质

JavaScript 没有传统的"类"——ES6 的 class 只是语法糖。本质上,JavaScript 的继承是通过原型链(Prototype Chain) 实现的:每个对象都有一个内部链接指向另一个对象(它的"原型"),当访问一个属性时,如果自身没有,就顺着原型链向上找,直到找到或到达 null

Event Loop——理解异步的关键

JavaScript 是单线程的,但它能同时处理网络请求、用户交互和定时器,秘密就在于 Event Loop(事件循环)。它维护一个任务队列,将异步回调按优先级分为宏任务(setTimeout、I/O)和微任务(Promise.then、MutationObserver),按特定顺序执行。面试中经常出"输出顺序题"来考察这个知识点。

this 指向——最令人困惑的特性

this 的值取决于函数是如何被调用的,而不是它在哪里定义的。这让很多人困惑。核心规则有四条:默认绑定、隐式绑定、显式绑定(call/apply/bind)、new 绑定——以及 ES6 箭头函数的特殊规则(继承外层 this)。

异步编程——从回调到 async/await

JavaScript 的异步编程经历了三代演进:回调函数(Callback)→ Promiseasync/await。Promise 解决了回调地狱问题,async/await 让异步代码读起来像同步代码。理解 Promise 的状态机(pending → fulfilled/rejected)和链式调用机制是关键。

ES6+ 新特性

ES6(ES2015)是 JavaScript 历史上最大的一次升级:箭头函数、解构赋值、模板字符串、let/const、Promise、class、模块化(import/export)等。此后每年都会发布新特性——可选链(?.)、空值合并(??)、Array.at() 等。


学习建议

推荐学习路径
  1. 作用域 + 闭包 + this → JavaScript 三座大山,面试必问
  2. 原型与继承 → 理解 JS 面向对象的本质
  3. Event Loop + 异步编程 → 理解 JS 异步模型,面试高频
  4. 数据类型 + ES6+ → 日常开发基础
  5. V8 GC + 深拷贝 + 模块化 → 进阶理解
  6. Proxy / Set·Map / Symbol → 了解现代 JS 高级特性

相关链接