信息发布→ 登录 注册 退出

什么是箭头函数_它和普通函数有什么不同

发布时间:2025-12-30

点击量:
箭头函数是ES6引入的简洁函数语法,无独立this、arguments、prototype,不可用new调用或作为构造函数;适用于数组回调、保持外层this的闭包等场景,不适用于对象方法或需动态绑定this的函数。

箭头函数是 ES6 引入的一种更简洁的函数定义方式,用 => 符号代替 function 关键字。它不只是写法变短了,核心差异在于行为逻辑——尤其是 thisargumentsprototype 和调用方式这些底层机制。

语法和命名方式不同

普通函数可以具名(如 function foo() {})或匿名(如 const fn = function() {}),而箭头函数天生匿名,只能通过变量赋值来使用:
const add = (a, b) => a + b;
const log = msg => console.log(msg);
单参数时可省括号,单表达式可省大括号和 return,写起来更轻量。

this 指向完全固定

普通函数的 this 取决于调用方式:对象方法调用指向该对象,独立调用指向全局(非严格模式)或 undefined(严格模式),还能用 call/apply/bind 动态改。
箭头函数没有自己的 this,它直接捕获定义时所在作用域的 this 值,之后永远不变:
- 在对象方法里写箭头函数,this 不会指向该对象,而是外层上下文(比如全局或外层函数);
- 无法用 .call() 等强行修改它的 this

缺少关键函数特性

箭头函数不支持以下普通函数具备的能力:
- ❌ 不能用 new 调用(无 prototype,报错);
- ❌ 没有 arguments 对象(需用 rest 参数 ...args 替代);
- ❌ 没有 new.target
- ❌ 不能用 yield,因此不能作为 Generator 函数;
- ❌ 没有 super(在类中无法访问父类方法)。

适用和不适用的典型场景

✅ 适合:
- 数组方法的回调(mapfilterreduce);
- 简单纯计算、无副作用的一次性函数;
- 需要保持外层 this 的闭包场景(比如事件监听器中避免手动 bind)。

❌ 避免:
- 定义对象方法且内部用到 this(容易指向错误);
- 需要构造实例的构造函数;
- 需要动态绑定 this 或访问 arguments 的函数。

标签:# 事件  # 不适用  # 它不  # 报错  # 不支持  # 适用于  # 尤其是  # 自己的  # 回调  # 绑定  # 不能用  # prototype  # this  # 严格模式  # es6  # 对象  # function  # undefined  # console  # map  # 闭包  # const  # Filter  # 构造函数  # 父类  # red  # 作用域  # app  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!