箭头函数更紧凑但无this、arguments且不能作构造函数;普通函数保留完整运行时行为。写法:() => {}、x => x*2、(a,b) => a+b;单行隐式返回,多行需return;返回对象要加();this指向定义时外层作用域。

箭头函数写法更紧凑,核心区别在于它没有自己的 this、arguments,也不能当构造函数用;普通函数则保留完整运行时行为,适合需要动态上下文的场景。
箭头函数怎么写
基本形式是 参数 => 函数体,语法灵活,按需简化:
- 无参数:`() => console.log('Hi')`
- 单个参数:`x => x * 2`(括号可省)
- 多个参数:`(a, b) => a + b`(括号不可省)
- 单行返回值:自动隐式返回,不用写
return和大括号 - 多行逻辑:必须加花括号,并显式写
return(如需返回值) - 返回对象字面量:要包在小括号里,`() => ({ name: 'Alice' })`,否则会被当成函数体
最常踩坑的 this 差异
普通函数的 this 是调用时决定的,谁调用就指向谁;箭头函数没有自己的 this,它直接沿作用域链向上找定义时所在位置的 this,且无法被 call、apply、bind 修改。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
典型例子:
- 对象方法中用普通函数:
obj.method()→this指向obj - 对象方法中用箭头函数:
obj.arrow()→this指向外层(通常是全局或上层函数),不是obj - 定时器或事件回调中,想保持类实例的
this,用箭头函数最稳妥
其他关键区别
这些限制源于箭头函数的设计定位——轻量、无状态、不参与构造和执行上下文管理:
-
没有 arguments 对象:要用
...args剩余参数替代 -
不能用 new 调用:没有
prototype,也不支持作为构造函数 - 没有 prototype 属性:无法被继承,也不参与原型链
- 不能用 yield:不支持生成器语法
-
总是匿名:没有函数名,堆栈追踪中显示为
anonymous
什么时候选哪个
没有绝对优劣,看用途:
- 写回调(如
map、filter、setTimeout)、保持外层this,优先用箭头函数 - 要当构造函数、需要动态
this、要用arguments或yield,必须用普通函数 - 定义对象方法、事件处理器(尤其涉及
this绑定时),普通函数更可控;若已用类字段+箭头写法(如handleClick = () => {}),也属常见实践
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










