箭头函数是ES6引入的简洁函数语法,无this/arguments/super/new.target,不能作构造函数,适合简短回调但不适用需动态this或实例化的场景。

箭头函数是 ES6 引入的一种简洁的函数定义语法,它没有自己的 this、arguments、super 或 new.target,行为更轻量,也更适用于某些场景。
语法更简洁
箭头函数省略了 function 关键字和 return(单表达式时自动返回),写起来更紧凑:
- 普通函数:const add = function(a, b) { return a + b; };
- 箭头函数:const add = (a, b) => a + b;
- 单参数可省括号:const square = x => x * x;
- 无参需写空括号:const sayHi = () => "Hello";
this 绑定方式不同
普通函数的 this 取决于调用方式(谁调用,this 就是谁);箭头函数没有自己的 this,它会沿作用域链向上找外层最近的非箭头函数的 this 值,且无法通过 call、apply、bind 改变。
- 这意味着在对象方法或事件回调中,用箭头函数容易“意外”保留定义时的 this,比如定时器里访问对象属性时可能出错。
- 如果需要动态 this(如 Vue 方法、React 类组件事件处理),通常得用普通函数。
不能作为构造函数
箭头函数没有 prototype,也没有 [[Construct]] 内部方法,所以不能用 new 调用,否则会报错。
立即学习“Java免费学习笔记(深入)”;
- new (() => {}) // TypeError: is not a constructor
- 需要实例化对象时,必须使用普通函数或 class。
没有 arguments 对象
箭头函数内部访问 arguments 会报错或取到外层函数的 arguments(如果存在)。替代方案是使用剩余参数 ...args。
- 普通函数:function sum() { return Array.from(arguments).reduce((a, b) => a + b); }
- 箭头函数:const sum = (...args) => args.reduce((a, b) => a + b);
基本上就这些。箭头函数不是万能替代品,而是补充工具——适合简短逻辑、避免 this 混乱的回调,但不适合需要动态上下文或构造能力的场景。











