2026-03-23
2026-03-23
03前端进阶核心知识点总结
本文档总结了事件冒泡与委托、函数进阶(this、arguments)、递归与闭包等 JavaScript 进阶概念。
1.Axios基础使用
Axios 是一个基于 Promise 的 HTTP 客户端,简化了 Ajax 请求。1.1 GET 请求带参数
1 | // 方式一:params 配置项 |
1.2 POST 请求
javascript
1 | axios.post('http://localhost:3008/list', { name: 123 }).then(function (res) { |
2. 事件机制
2.1 事件冒泡
当一个元素的事件被触发时,该事件会沿着 DOM 树向上逐级传播,触发祖先元素上绑定的同类型事件。
text
1 | 子元素按钮点击 → 父元素 → 祖父元素 → ... → document |
2.2 事件对象
事件处理函数的参数,提供事件相关的信息和方法。
| 方法 | 作用 |
|---|---|
e.preventDefault() |
阻止默认行为(如 a 标签跳转、表单提交) |
e.stopPropagation() |
阻止事件冒泡 |
2.3 事件委托
利用事件冒泡机制,将事件监听器绑定到父元素上,通过判断 e.target 来执行对应逻辑。
javascript
1 | var list = document.querySelector('.list') |
优点:
- 动态添加的子元素无需重新绑定事件
- 减少事件监听器数量,提升性能
3. 函数进阶
3.1 函数内的 this
this 指向调用函数的对象,在函数执行时动态确定。
javascript
1 | // 全局调用 → this 指向 window |
3.2 arguments 关键字
函数内部自动生成的类数组对象,包含所有传入的实参。
javascript
1 | function fun(a, b, c, d, e, f, g) { |
特点:
- 有
length属性 - 不是真正的数组,无法使用数组方法
- 适用于不确定参数个数的函数
3.3 递归函数
函数内部调用自身的函数,需要设置退出条件避免无限循环。
javascript
1 | // 示例:阶乘 |
4. 闭包
4.1 定义
闭包 = 函数 + 其所在的词法环境。一个函数能够访问其外部作用域的变量,即使外部函数已执行完毕。
javascript
1 | function fun() { |
4.2 经典问题:循环中的 setTimeout
问题:var 声明的变量没有块级作用域,异步回调执行时循环已结束,i 变为 5。
javascript
1 | for (var i = 0; i < 5; i++) { |
解决方案一:立即执行函数(IIFE)创建闭包
javascript
1 | for (var i = 0; i < 5; i++) { |
解决方案二:使用 let(ES6)
javascript
1 | for (let i = 0; i < 5; i++) { |
4.3 闭包的作用
- 创建私有变量
- 保存函数执行状态
- 实现模块化
5. 知识图谱
text
1 | ┌─────────────────────────────────────────┐ |
6. 总结
| 概念 | 核心要点 | 常见应用 |
|---|---|---|
| 事件委托 | 利用冒泡,父元素监听子元素事件 | 动态列表的删除/编辑操作 |
| this | 由调用方式决定,箭头函数继承外层 | 对象方法、构造函数、回调函数 |
| arguments | 类数组,存放所有实参 | 实现重载、累加器等 |
| 闭包 | 函数 + 外部作用域引用 | 模块化、循环异步问题、防抖节流 |
延伸学习建议:
- 深入理解事件循环(Event Loop)机制
- 掌握
call、apply、bind手动改变 this 指向 - 学习 ES6 的
let/const、箭头函数、Promise 等特性