返回首页

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?.ba ?? b 可明显减少判空模板代码。

5. Map / Set / WeakMap

Map 键可为任意类型;Set 自动去重;WeakMap 键必须是对象且弱引用。

五、函数相关

1. call / apply / bind

三者都可改 thisbind 返回新函数,call/apply 立即执行。

2. 柯里化

把多参函数转为可分步传参函数,常用于复用参数和组合。

3. 高阶函数

接收函数或返回函数,如 map/filter/reduce

六、实战提醒

1. 防抖与节流

高频事件优先治理,防止渲染抖动和请求风暴。

2. 深浅拷贝

浅拷贝只复制第一层引用;结构化数据可优先考虑 structuredClone

3. 内存泄漏排查

重点看:全局引用、未清理定时器、闭包滥用、DOM 引用残留。

七、补充模块

1. jQuery 定位

老项目维护常见,核心是选择器、DOM 操作、事件和 Ajax 封装。

2. 基础算法题

高频起手式:二分查找、计数哈希、双指针、滑动窗口。

30 秒口述模板

我会把「JavaScript」分成三层来讲:先讲核心概念和它解决的问题,再讲一个高频场景与实现思路,最后补充常见坑点和优化方向。这样既能回答基础问题,也能接住面试官追问。

2 分钟口述模板

如果展开讲,我会按“定义 -> 原理 -> 场景 -> 取舍”四步回答。先说明「JavaScript」解决的核心问题和边界;再讲 1 到 2 个关键机制,解释为什么这样设计;然后结合一个真实业务场景说明如何落地;最后补充常见坑点、性能或稳定性优化,以及与相近方案的取舍标准。

这样回答的好处是:既有原理深度,也有工程落地感,面试官继续追问到实现细节时也能自然展开。