0

0

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

夜晨

夜晨

发布时间:2026-01-28 16:01:43

|

777人浏览过

|

来源于php中文网

原创

箭头函数不是语法糖,它没有自己的this、arguments、super和new.target;this在定义时绑定且不可变,不能用作构造函数或Generator函数,无arguments对象,需用...args替代。

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

箭头函数不是普通函数的语法糖,它没有自己的 thisargumentssupernew.target —— 这是所有差异的根源。

箭头函数的 this 永远继承自外层作用域

普通函数的 this 在调用时动态绑定(取决于怎么调),而箭头函数的 this 在定义时就固定了,无法被 callapplybind 改变。

常见错误现象:setTimeout 里用普通函数导致 this 丢失,改用箭头函数后正常:

const obj = {
  name: 'test',
  run() {
    // ❌ 普通函数:this 指向 global / undefined(严格模式)
    setTimeout(function() { console.log(this.name) }, 100)
    // ✅ 箭头函数:this 继承自 run 方法的 this
    setTimeout(() => { console.log(this.name) }, 100)
  }
}
  • 不能用作构造函数:调用 new (() => {}) 会抛出 TypeError: xxx is not a constructor
  • 对象方法中慎用:若方法需被其他上下文调用(如作为事件回调、传给 map),箭头函数可能锁死 this,反而不如普通函数灵活

箭头函数没有 arguments 对象

在箭头函数内部访问 arguments,实际拿到的是外层函数的 arguments,不是当前函数的参数列表。

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

ZOER
ZOER

AI全栈应用开发平台

下载

使用场景:需要不定参数时,必须用剩余参数 ...args 替代:

// ❌ 错误:箭头函数里 arguments 不指向自身
const sum = () => Array.from(arguments).reduce((a, b) => a + b, 0)

// ✅ 正确:用剩余参数 const sum = (...args) => args.reduce((a, b) => a + b, 0)

  • ES2015+ 环境下,优先用 ...args,语义清晰且无兼容性问题
  • 若需兼容老旧环境且必须模拟 arguments 行为,只能改用普通函数

箭头函数不能用作 Generator 函数

箭头函数不支持 function* 语法,也没有 yield 关键字支持。

这意味着你无法用箭头函数实现异步迭代、惰性求值等依赖 yield 的逻辑:

// ❌ 语法错误
const gen = () => yield 1

// ✅ 必须用普通函数 function* gen() { yield 1 }

  • 箭头函数返回一个 Promise 是完全可行的(比如 () => fetch(...)),但和 Generator 无关
  • 想写异步可暂停逻辑?选 async/await 配合普通函数,或直接用 function*

真正容易被忽略的是:箭头函数的「简洁」常让人误以为它更“现代”或“高级”,但它的限制是刚性的。什么时候该用、什么时候不该用,取决于你是否需要控制 this、是否要被 new 调用、是否要 yield —— 而不是代码行数少不多。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
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相关内容,阅读专题下面的文章了解更多详细内容。

60

2025.11.17

java判断map相关教程
java判断map相关教程

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

40

2025.11.27

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

482

2023.08.04

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

163

2023.10.07

promise的用法
promise的用法

“promise” 是一种用于处理异步操作的编程概念,它可以用来表示一个异步操作的最终结果。Promise 对象有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。Promise的用法主要包括构造函数、实例方法(then、catch、finally)和状态转换。

306

2023.10.12

html文本框类型介绍
html文本框类型介绍

html文本框类型有单行文本框、密码文本框、数字文本框、日期文本框、时间文本框、文件上传文本框、多行文本框等等。详细介绍:1、单行文本框是最常见的文本框类型,用于接受单行文本输入,用户可以在文本框中输入任意文本,例如用户名、密码、电子邮件地址等;2、密码文本框用于接受密码输入,用户在输入密码时,文本框中的内容会被隐藏,以保护用户的隐私;3、数字文本框等等。

405

2023.10.12

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

142

2026.01.28

热门下载

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

精品课程

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

共58课时 | 4.2万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

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

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