箭头函数与普通函数最核心区别在于this绑定方式不同:箭头函数无独立this,继承定义时外层作用域this且不可修改;普通函数this由调用方式动态决定。

箭头函数和普通函数最核心的区别不在写法多简洁,而在于 this 绑定方式不同 —— 这一点直接影响到实际开发中是否能正确访问对象属性、能否用于定时器或事件回调、能不能被 new 调用等关键行为。
语法写法更轻量,但不是“只是省几个字”
箭头函数省略 function 关键字,用 => 连接参数和函数体:
- 单参数可省括号:
x => x * 2 - 单表达式可省
{}和return:(a, b) => a + b - 无参数需空括号:
() => console.log('hi') - 普通函数必须显式声明:
function foo() { return 'ok'; }或const foo = function() { ... };
this 指向固定,不会随调用方式改变
这是最常踩坑的地方:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 普通函数的
this在运行时决定:谁调用,this就指向谁(如obj.fn()→this === obj) - 箭头函数没有自己的
this,它直接继承定义时所在作用域的this,且后续无法修改 -
call/apply/bind对箭头函数的this无效,只能传参 - 典型适用场景:类方法里写定时器、事件监听、Promise 回调,避免
this指向丢失
功能限制:不能当构造函数,也没有 arguments
箭头函数刻意舍弃了一些面向对象和动态参数能力:
- 不能用
new调用,否则报错:TypeError: xxx is not a constructor - 没有
arguments对象,要用...rest替代:(...args) => args.length - 没有
prototype属性,不支持原型链继承 - 不能用
yield,无法定义生成器函数
适用场景建议
选箭头函数,当你要:
- 写简短回调(数组遍历、
setTimeout、fetch后续处理) - 在类或对象方法中保持外层
this(比如 React 类组件、Vue 选项 API 的 methods 内) - 避免手动绑定
this(不用再写handleClick = this.handleClick.bind(this))
选普通函数,当你要:
- 定义构造函数或需要
new实例化 - 明确控制
this(比如用call做函数复用) - 写需要
arguments或生成器逻辑的函数 - 需要在原型上添加方法(如
Array.prototype.myMap)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










