箭头函数是ES6引入的简洁函数语法,无自身this/arguments/super/new.target,词法绑定this,不可用作构造函数或生成器,适用于简短回调等场景。

箭头函数是 ES6 引入的一种简洁的函数定义语法,它没有自己的 this、arguments、super 或 new.target,而是继承自外层作用域。这使得它在某些场景下更轻量,但也带来关键行为差异。
语法更简短,省略 function 关键字和 return(单表达式时)
箭头函数用 => 定义,参数只有一个可省括号,函数体只有一条表达式可省大括号和 return。
例如:
const add = (a, b) => a + b;const sayHi = name => `Hello, ${name}`;
const empty = () => {};
this 绑定是词法的,不随调用方式改变
普通函数的 this 取决于**怎么被调用**(如对象方法、call/apply、事件回调等),而箭头函数的 this 始终等于**定义时所在上下文的 this**,无法通过 call、apply、bind 改变。
立即学习“Java免费学习笔记(深入)”;
常见影响场景:
- 对象方法中若用箭头函数,
this不指向该对象,而是外层作用域(常为window或undefined) - 事件监听器或定时器中,想访问类实例属性时,用箭头函数可避免手动绑定
this - 不能用作构造函数:调用
new fn()会报错
没有 arguments 对象,也没有 new.target
箭头函数内部访问 arguments 会报错,应改用剩余参数 ...args;也无法通过 new.target 判断是否被 new 调用。
例如:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0); // ✅ 正确const bad = () => console.log(arguments); // ❌ 报错 ReferenceError
不能作为 Generator 函数,也不支持 yield
箭头函数不能加 * 声明,也不能在函数体内使用 yield。需要生成器功能,必须用传统 function* 语法。
总结:箭头函数适合写简短的回调、逻辑简单且无需动态 this 的场景;涉及对象方法、构造、需要 arguments 或生成器时,仍要用普通函数。











