JavaScript箭头函数是什么_它和普通函数有哪些区别

雨静君_5032

雨静君_5032

2025-12-25

651人浏览

原创

箭头函数是ES6引入的简洁函数语法,词法绑定this、不可作为构造函数、无arguments对象,适用于需稳定this和简短逻辑的场景,但不适用于需动态this或实例化的场合。

javascript箭头函数是什么_它和普通函数有哪些区别

箭头函数是 ES6 引入的一种简洁的函数定义语法,它没有自己的 this、arguments、super 或 new.target,也不可以作为构造函数使用。它最核心的特点是**词法绑定 this**,也就是说它的 this 值由定义时的外层作用域决定,而不是调用时的上下文。

箭头函数没有独立的 this

普通函数的 this 取决于调用方式(如对象方法调用、call/apply、事件回调等),而箭头函数不绑定自己的 this,直接继承外层作用域的 this 值。

  • 在对象方法中使用普通函数,this 指向该对象;但若用箭头函数,则 this 指向外层(比如全局或外层函数)
  • 在事件监听器或定时器中,普通函数容易丢失 this,常需 bind;箭头函数天然避免这个问题
  • React 类组件中,类方法常用箭头函数写法(如 handleClick = () => {}),就是为了保持对组件实例的正确引用

箭头函数不能用作构造函数

箭头函数没有 prototype 属性,也没有 [[Construct]] 内部方法,因此无法通过 new 调用。

  • const fn = () => {}; new fn(); 会抛出 TypeError: fn is not a constructor
  • 需要实例化对象时,必须使用普通函数或 class

箭头函数没有 arguments 对象

箭头函数内部访问 arguments 会沿作用域链向上查找,拿到的是外层函数的 arguments,不是自身参数列表。

Gradle 9.8.0
Gradle 9.8.0

Gradle 9.8.0 官方二进制分发包,适用于 Windows、macOS 与 Linux 的 Java、Kotlin 和 Android 项目构建。

下载
  • 想获取参数时,应使用剩余参数(...args)替代 arguments
  • 例如:const sum = (...nums) => nums.reduce((a, b) => a + b, 0);

语法更简洁,但适用场景有限

箭头函数省略 function 关键字、return(单表达式时)和花括号(单参数且单语句时),适合写简短逻辑。

  • 单参数可省括号:x => x * 2
  • 单表达式自动返回:arr.map(x => x ** 2)
  • 但多语句必须加花括号和显式 return:x => { console.log(x); return x + 1; }
  • 不适合需要动态 this、构造实例、重写 arguments 的场景

本质上,箭头函数不是普通函数的“升级版”,而是为特定需求设计的替代语法——它牺牲了灵活性,换来了更可预测的 this 和更紧凑的写法。选哪个,取决于你是否需要 this 绑定、是否要 new 实例、是否在回调中依赖词法作用域。

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
es6新特性
es6新特性

es6新特性有:1、块级作用域变量;2、箭头函数;3、模板字符串;4、解构赋值;5、默认参数;6、 扩展运算符;7、 类和继承;8、Promise。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.17

285

5

es6新特性有哪些
es6新特性有哪些

es6的新特性有:1、块级作用域;2、箭头函数;3、解构赋值;4、默认参数;5、扩展运算符;6、模板字符串;7、类和模块;8、迭代器和生成器;9、Promise对象;10、模块化导入和导出等等。本专题为大家提供es6新特性的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.04

406

5

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2025.12.24

375

12

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2023.09.20

2298

7

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

4156

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

306

9

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

2025.09.05

630

5

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.16

343

7

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.17

533

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 12.3万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习