函数声明与箭头函数定义机制完全不同:前者创建具名绑定并完全提升,后者是表达式求值且不提升;前者有独立执行上下文和动态this,后者继承外层词法作用域且this固定;前者天然具名利于调试,后者匿名需依赖变量名。
函数声明和箭头函数不是“换种写法”,而是定义机制完全不同:一个创建具名绑定并参与提升,另一个是表达式求值,依赖变量声明规则。
函数声明必须使用 function 关键字,后跟函数名和括号参数列表:
function greet(name) { return 'Hello, ' + name; }function,也不能用 const/let 包裹箭头函数完全省略 function,用 => 连接参数与函数体:
const greet = (name) => 'Hello, ' + name;id => users.find(u => u.id === id)
() => console.log('hi') 或 (a, b) => a + b
() => ({ x: 1 })
函数声明会被**完全提升**:函数名和函数体在作用域顶部就可用:
foo(); function foo() { console.log(1); } —— 正常执行箭头函数本质是赋值表达式,**不提升**:
bar(); const bar = () => {}; —— 报 ReferenceError
const bar = ...,只受 const/let 声明规则约束函数声明拥有自己的执行上下文:
this 由调用方式决定(如 obj.fn() 中 this 指向 obj)arguments 对象、new 调用、prototype
call/apply/bind 修改 this
箭头函数没有执行上下文,直接继承外层词法作用域:
this 固定,无法通过调用方式或 bind 改变arguments,需用剩余参数 ...args
new 调用,无 prototype 属性函数声明天然具名,对开发体验友好:
func.name 返回真实函数名,堆栈、断点、性能分析中清晰可见function factorial(n) { return n )
箭头函数默认匿名:
const fn = () => {}; → fn.name 是空字符串或 'anonymous'
anonymous,错误定位难度增加阿里云服务器ECS省钱技巧:临界天数计算公式:付费模式这么选更划算!
阿里云服务器ECS三种付费类型怎么选 包年包月 / 按量 / 抢占式成本对比
2026阿里开发者社区认证的门店小程序开发工具实测对比:附门店小程序制作教程
2026阿里开发者评选出的全国最佳教培机构小程序开发工具实测对比:附教培机构小程序制作教程
轻抖app如何实名认证 轻抖实名认证方法
2026全国3款AI/SAAS商城小程序开发工具推荐:附商城小程序开发教程