0

0

javascript箭头函数是什么_它与普通函数有何不同【教程】

紅蓮之龍

紅蓮之龍

发布时间:2026-01-31 14:35:49

|

815人浏览过

|

来源于php中文网

原创

箭头函数没有自己的this,继承外层作用域的this;不能用作构造函数,无prototype和arguments;简写语法需注意对象字面量要加括号;适合短回调,不适用于需动态this或复杂逻辑的场景。

javascript箭头函数是什么_它与普通函数有何不同【教程】

箭头函数没有自己的 this,它继承外层作用域this

这是最常踩坑的地方。普通函数的 this 取决于调用方式(如 obj.method()this 指向 obj),而箭头函数根本不绑定 this,它直接沿作用域链向上找外层函数的 this

典型错误场景:

  • 在对象方法中用箭头函数:const obj = { name: 'a', fn: () => console.log(this.name) }this 指向全局或 undefined(严格模式),不是 obj
  • 事件回调里想访问实例:button.addEventListener('click', () => this.handleClick()) → 如果写在类方法里,this 是类实例;但如果写在全局,就不是

箭头函数不能用作构造函数,也没有 prototypearguments

它没有 [[Construct]] 内部方法,所以不能被 new 调用,否则报错:TypeError: xxx is not a constructor

同时:

立即学习Java免费学习笔记(深入)”;

  • 没有 arguments 对象 —— 用剩余参数 ...args 替代
  • 没有 prototype 属性 —— ArrowFn.prototypeundefined
  • 不能用 yield,不支持生成器语法

简写语法省略 return 和花括号只适用于单表达式

这是写错逻辑的高发区。以下写法看似简洁,实则隐含返回值:

invideo AI
invideo AI

InVideo 使用现成的模板简化视频创建

下载
const add = (a, b) => a + b; // ✅ 返回 a + b
const obj = (a, b) => ({ a, b }); // ✅ 注意括号:必须包一层小括号,否则被解析为代码块
const broken = (a, b) => { a, b }; // ❌ 代码块,无 return,返回 undefined

常见误判点:

  • 想返回对象字面量却忘了外层 (),结果返回 undefined
  • 用大括号但没写 return,以为会隐式返回,实际不会
  • 多语句必须显式写 return,且要用 {}

箭头函数适合做短小的回调,不适合替代所有函数声明

它不是“更现代的函数”,而是有明确设计意图的语法糖:简化无状态、无 this 绑定需求的函数表达式。

该用箭头函数的场景:

  • array.map(x => x * 2)
  • setTimeout(() => doSomething(), 100)
  • React 函数组件内定义事件处理器(确保 this 指向正确)

不该用的场景:

  • 需要动态 this 的方法(如 Vue 方法、类原型方法)
  • 需要 argumentsnew 实例化的函数
  • 函数体复杂、需调试、需命名(箭头函数是匿名的,堆中显示为 anonymous

真正容易被忽略的是:箭头函数的「词法 this」是静态的 —— 它在定义时就锁定了外层 this 值,哪怕之后外层 this 改变,它也不会变。这个特性既强大又危险,用前得确认外层作用域是否稳定。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言const用法
c语言const用法

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

532

2023.09.20

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

398

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

575

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

398

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

575

2023.08.10

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

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

75

2025.09.05

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

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

36

2025.11.16

golang map原理
golang map原理

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

61

2025.11.17

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

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

精品课程

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

共42课时 | 7.5万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号