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