[5-2] ES6+ 高频新特性 · 函数的全面进化

5 阅读2分钟

所属板块:5. ES6+ 高频新特性

记录日期:2026-03-xx
更新:遇到箭头函数 this 或参数处理相关题时补充

1. 箭头函数(Arrow Functions):函数形态的彻底革新

箭头函数 () => {} 不是普通函数的简写,而是彻底改变了函数行为的语法糖。它有四大“没有”,这是面试中最高频的考点之一。

  1. 没有自己的 this

    • this 在定义时就由外层作用域决定(词法 this)
    • 永远无法被 callapplybind 改变
    const obj = {
      name: "张三",
      say: () => { console.log(this.name); }   // this → window(非严格模式)
    };
    obj.say();   // undefined(箭头函数不绑定 this)
    
  2. 没有 arguments 对象

    • 必须用 Rest 参数 ...args 代替
    const fn = (...args) => console.log(args);
    fn(1, 2, 3);   // [1, 2, 3]
    
  3. 不能作为构造函数(不能 new)

    • 没有 prototype 属性,也没有内部 [[Construct]] 方法
    const Person = () => {};
    new Person();   // TypeError
    
  4. 不能用作 Generator 函数

    • 不能使用 yield 关键字

2. 函数参数的新特性

默认参数(Default Parameters):

  • 支持惰性求值(只有真正需要时才计算)
function fetchData(url, timeout = 3000) {
  // timeout 未传或传 undefined 时才使用默认值
}

Rest 参数(...args):

  • 把多余参数收集成真正的数组(取代类数组 arguments)
  • 必须放在最后
function sum(...numbers) {
  return numbers.reduce((a, b) => a + b, 0);
}
sum(1, 2, 3, 4);   // 10

3. 箭头函数 vs 普通函数实战对比

场景普通函数箭头函数推荐场景
对象方法this 指向调用者this 指向外层普通函数(需 this)
回调函数this 容易丢失this 稳定箭头函数(事件回调)
需要 arguments无(用 ...args)普通函数
需要 new可以不可以普通函数

4. 小结 & 复习时的“函数进化视角”

  • 箭头函数的核心是词法 this + 更简洁语法,但有明确的使用边界
  • 默认参数 + Rest 参数让函数参数处理现代化
  • [5-1] 的变量与数据结构 + 本文的函数进化,为后面的对象扩展与 Proxy 打下基础

下一篇文章会进入 [5-3]:对象的扩展与元编程(对象字面量增强、展开语法、Proxy 与 Reflect 双子星)——这是 Vue3 响应式系统的核心。

返回总目录:戳这里