箭头函数是ES6引入的简写语法,无独立this、arguments、super和new.target,不可作为构造函数;其this词法绑定外层作用域,适合回调防丢失,但需动态this、构造调用、arguments或继承时须用普通函数。
箭头函数是 ES6 引入的简写函数语法,核心特点是没有自己的 this、arguments、super 或 new.target,且不能用作构造函数。它和普通函数在行为上有本质差异,不只是写法更短。
普通函数的 this 在调用时动态绑定,取决于调用方式(如 obj.fn() 中 this 指向 obj);而箭头函数的
this 是词法绑定的——它继承外层作用域的 this 值,且不可被 call、apply、bind 改变。
箭头函数内部访问不到 arguments,但可以用剩余参数(...args)替代:
function sum() { return Array.from(arguments).reduce((a, b) => a + b); }const sum = (...args) => args.reduce((a, b) => a + b);箭头函数没有 prototype 属性,调用 new 会直接报错:TypeError: xxx is not a constructor。
箭头函数不支持 new.target(判断是否被 new 调用),也无法在子类中通过 super() 调用父类构造器。
不复杂但容易忽略:写箭头函数前,先问自己——这里需不需要独立的 this?会不会被 new 调用?要不要 arguments 或 super?满足任一“要”,就该用普通函数。