箭头函数是javascript中简化函数定义的方式,省略function关键字、自动绑定this、语法更紧凑,但不可用作构造函数、无arguments对象、不支持generator、无法命名。

箭头函数是 JavaScript 中简化函数定义的常用方式,它省略 function 关键字、自动绑定 this,并支持更紧凑的语法。但要注意它不适用于所有场景,比如需要动态 this 或作为构造函数时。
基础写法:从普通函数到箭头函数
当函数体只有一条语句且返回值为表达式时,可省略 {} 和 return:
-
普通函数:
const add = function(a, b) { return a + b; }; -
单参数 + 单表达式:
const square = x => x * x; -
多参数或无参:
const sum = (a, b) => a + b;,const sayHi = () => "Hello";
带语句块的箭头函数
如果函数体内有多个操作(如条件判断、变量声明),需用 {} 包裹,并显式写 return:
const formatName = (first, last) => { const full = `${first} ${last}`; return full.toUpperCase(); };- 忘记
return会导致返回undefined,这点和普通函数一致,但新手容易忽略。
箭头函数没有自己的 this
它会捕获定义时外层作用域的 this,因此适合用在回调中避免 this 失去上下文:
-
问题代码(普通函数):
obj.method(() => console.log(this)); // this 指向 obj -
错误写法(普通函数):
obj.method(function() { console.log(this); }); // this 可能是 global 或 undefined(严格模式) - 这也意味着箭头函数不能用作对象方法或构造函数(没有
prototype,调用new会报错)。
注意陷阱与不适用场景
不是所有函数都适合改写为箭头函数:
-
不能作为构造函数:没有
[[Construct]],new (() => {})会抛出错误。 -
没有
arguments对象:要用剩余参数替代,如(...args) => args[0]。 -
不能用作 Generator 函数:不支持
function*语法,也没有yield。 -
命名函数表达式中无法获得函数名:箭头函数总是匿名,调试时堆栈中显示为
anonymous。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











