JavaScript 基础知识速览
使用说明
面向速读,每个点只保留“定义 + 关键提醒”。
一、基础语法
1. 变量声明
var 有变量提升且可重复声明;let/const 有块级作用域,优先使用 const。
2. 作用域与闭包
函数可访问定义时的词法环境;闭包常用于“状态缓存”和“私有变量”。
3. this 指向
默认、隐式、显式(call/apply/bind)、new 绑定规则按优先级生效。
4. 原型与原型链
对象查找属性会沿 [[Prototype]] 向上,直到 null。
二、数据类型与判断
1. 基本类型
number string boolean null undefined symbol bigint。
2. 引用类型
常见有 Object Array Function Date RegExp Map Set。
3. 类型判断
typeof 适合基础类型;数组优先 Array.isArray;精确判断用 Object.prototype.toString.call()。
三、异步与网络
1. XHR 与 Fetch
fetch 基于 Promise,更现代;XHR 兼容更老环境。
2. Promise
重点关注状态不可逆、链式调用、异常冒泡。
3. async/await
语法糖,本质仍是 Promise;await 后代码像同步,但不会阻塞主线程。
4. JSONP
利用 <script> 绕过同源限制,仅支持 GET。
四、ES6+ 高频能力
1. 箭头函数
不绑定自身 this/arguments,适合回调,不适合做构造函数。
2. 解构与展开
用于参数解包、对象拷贝、函数实参展开。
3. 模板字符串
支持多行和插值,减少字符串拼接噪音。
4. 可选链与空值合并
obj?.a?.b 与 a ?? b 可明显减少判空模板代码。
5. Map / Set / WeakMap
Map 键可为任意类型;Set 自动去重;WeakMap 键必须是对象且弱引用。
五、函数相关
1. call / apply / bind
三者都可改 this;bind 返回新函数,call/apply 立即执行。
2. 柯里化
把多参函数转为可分步传参函数,常用于复用参数和组合。
3. 高阶函数
接收函数或返回函数,如 map/filter/reduce。
六、实战提醒
1. 防抖与节流
高频事件优先治理,防止渲染抖动和请求风暴。
2. 深浅拷贝
浅拷贝只复制第一层引用;结构化数据可优先考虑 structuredClone。
3. 内存泄漏排查
重点看:全局引用、未清理定时器、闭包滥用、DOM 引用残留。
七、补充模块
1. jQuery 定位
老项目维护常见,核心是选择器、DOM 操作、事件和 Ajax 封装。
2. 基础算法题
高频起手式:二分查找、计数哈希、双指针、滑动窗口。
30 秒口述模板
我会把「JavaScript」分成三层来讲:先讲核心概念和它解决的问题,再讲一个高频场景与实现思路,最后补充常见坑点和优化方向。这样既能回答基础问题,也能接住面试官追问。
2 分钟口述模板
如果展开讲,我会按“定义 -> 原理 -> 场景 -> 取舍”四步回答。先说明「JavaScript」解决的核心问题和边界;再讲 1 到 2 个关键机制,解释为什么这样设计;然后结合一个真实业务场景说明如何落地;最后补充常见坑点、性能或稳定性优化,以及与相近方案的取舍标准。
这样回答的好处是:既有原理深度,也有工程落地感,面试官继续追问到实现细节时也能自然展开。