ES6箭头函数与传统函数区别详解_javascript技巧

箭头函数语法更简洁,不绑定this、arguments,不能作为构造函数,适合用于回调和保持this上下文;传统函数功能更完整,适用于需要独立this或构造实例的场景。

es6箭头函数与传统函数区别详解_javascript技巧

箭头函数是ES6引入的一种更简洁的函数书写方式,它与传统函数在语法、this指向、使用场景等方面存在明显差异。理解这些区别有助于写出更清晰、不易出错的代码。

1. 语法更简洁

箭头函数省略了function关键字和return语句(单行表达式时),让代码更紧凑。

传统函数:

function add(a, b) {

  return a + b;

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

}

箭头函数:

const add = (a, b) => a + b;

当参数只有一个时,括号可省略:

const square = x => x * x;

无参数时需写空括号:

const sayHi = () => ‘Hello’;

2. this指向不同

这是两者最核心的区别。传统函数有自己的this上下文,而箭头函数没有自己的this,它会继承外层作用域的this值。

示例:对象方法中使用

const user = {

  name: ‘Alice’,

  age: 25,

  grow: function() {

即构数智人 即构数智人

即构数智人是由即构科技推出的AI虚拟数字人视频创作平台,支持数字人形象定制、短视频创作、数字人直播等。

即构数智人 36 查看详情 即构数智人

    setInterval(function() {

      console.log(this.age); // undefined

    }, 1000);

  }

};

上述代码中,setInterval内的function有独立的this,指向window或undefined(严格模式),导致无法访问user.age。

改用箭头函数:

const user = {

  name: ‘Alice’,

  age: 25,

  grow: function() {

    setInterval(() => {

      console.log(this.age); // 25

    }, 1000);

  }

};

箭头函数捕获的是grow方法执行时的this,即user对象,因此能正确访问age。

3. 不绑定arguments对象

传统函数内部可以使用arguments获取所有传入参数,而箭头函数没有arguments。

传统函数:

function logArgs() {

  console.log(arguments[0]); // 输出第一个参数

}

箭头函数:

const logArgs = () => {

  console.log(arguments); // ReferenceError

};

如果需要类数组参数,可用剩余参数代替:

const logArgs = (…args) => {

  console.log(args[0]);

};

4. 不能作为构造函数

箭头函数不能用new调用,因为它没有prototype属性,也不绑定this。

const Person = (name) => this.name = name;

const p = new Person(‘Bob’); // TypeError

传统函数可以正常构造实例。

5. 没有原型和constructor

箭头函数不存在prototype属性,也不能定义constructor。

const fn1 = () => {};

console.log(fn1.prototype); // undefined

传统函数则具备完整的原型链支持。

基本上就这些关键区别。箭头函数适合用于简化回调、保持this上下文一致的场景;传统函数更适合定义对象方法、构造函数等需要独立this或arguments的地方。合理选择,才能发挥各自优势。

以上就是ES6箭头函数与传统函数区别详解_javascript技巧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/309399.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Linux Bashrc是什么?详细解读
上一篇 2026年10月28日 10:00:08
HTML事件监听:为元素添加交互事件的代码教程
下一篇 2025年12月22日 18:41:57

相关推荐

  • sublime怎么撤销关闭的标签页_sublime恢复已关闭文件技巧

    sublime怎么撤销关闭的标签页_sublime恢复已关闭文件技巧sublime怎么撤销关闭的标签页_sublime恢复已关闭文件技巧sublime怎么撤销关闭的标签页_sublime恢复已关闭文件技巧sublime怎么撤销关闭的标签页_sublime恢复已关闭文件技巧

    答案:Sublime Text提供多种恢复误关闭文件的方法。1. 使用Ctrl + Shift + T(Windows/Linux)或Cmd + Shift +T(Mac)快捷键可依次恢复最近关闭的文件;2. 通过菜单栏File→Reopen Last Closed File手动恢复;3. 按Ctr…

    2026年10月28日 • 用户投稿
    000
  • JavaScript跨文档消息传递机制

    JavaScript跨文档消息传递机制JavaScript跨文档消息传递机制JavaScript跨文档消息传递机制JavaScript跨文档消息传递机制

    跨文档消息传递通过postMessage实现安全跨域通信。1. 发送方调用targetWindow.postMessage(message, targetOrigin)发送数据;2. 接收方监听window的message事件接收消息;3. 接收方验证event.origin和event.data确…

    2026年10月28日 • 用户投稿
    400
  • Java中如何将多个Set集合合并为一个

    Java中如何将多个Set集合合并为一个Java中如何将多个Set集合合并为一个Java中如何将多个Set集合合并为一个Java中如何将多个Set集合合并为一个

    使用addAll或Stream API可合并多个Set。先创建新Set,调用addAll逐个添加其他Set元素,自动去重;或用Stream.of结合flatMap和collect收集为新Set。示例:merged.addAll(set1)添加内容,或Stream方式函数式合并。注意类型一致、有序性选…

    2026年10月28日 • 用户投稿
    000
  • Java HashMap和Hashtable有什么区别 使用场景如何选择

    HashMap允许null键值且非线程安全,性能高;Hashtable方法同步,不允许null,性能较低;多线程推荐ConcurrentHashMap。 HashMap 和 Hashtable 都是 Java 中用于存储键值对的哈希表实现,但它们在多线程安全、性能、null 值支持等方面存在关键差异…

    2026年10月28日
    100
  • Java中如何使用ThreadLocal存储线程私有数据

    Java中如何使用ThreadLocal存储线程私有数据Java中如何使用ThreadLocal存储线程私有数据Java中如何使用ThreadLocal存储线程私有数据Java中如何使用ThreadLocal存储线程私有数据

    ThreadLocal用于线程私有数据隔离,每个线程独立读写,适合保存用户信息、事务ID等;通过set()设置、get()获取、remove()清除;可使用withInitial()设置默认值;Web应用中可用于请求级别用户上下文管理,需注意及时清理避免内存泄漏,不应用于线程间通信。 在Java中,…

    2026年10月28日 • 用户投稿
    000
  • 在Vue 3 + TypeScript中管理响应式全局状态:Pinia实践指南

    在Vue 3 + TypeScript中管理响应式全局状态:Pinia实践指南在Vue 3 + TypeScript中管理响应式全局状态:Pinia实践指南在Vue 3 + TypeScript中管理响应式全局状态:Pinia实践指南在Vue 3 + TypeScript中管理响应式全局状态:Pinia实践指南

    在vue 3 + typescript项目中,直接导出异步加载的变量会导致组件无法响应数据更新。本文将深入探讨这一问题,并提供基于pinia的专业解决方案。通过使用pinia,开发者可以高效地集中管理应用状态,确保数据在组件间的响应式共享,从而避免手动数据收集的繁琐与潜在错误,提升开发效率与代码可维…

    2026年10月28日 • 用户投稿
    100
  • windows怎么管理脱机文件_Windows脱机文件管理方法

    windows怎么管理脱机文件_Windows脱机文件管理方法windows怎么管理脱机文件_Windows脱机文件管理方法windows怎么管理脱机文件_Windows脱机文件管理方法windows怎么管理脱机文件_Windows脱机文件管理方法

    脱机文件问题可通过五种方法解决:一、通过控制面板启用或禁用脱机文件功能;二、在文件资源管理器中右键网络文件夹选择“立即同步”;三、停止Offline Files服务后删除C:WindowsCSC目录清理缓存;四、在同步中心的“管理脱机文件”中启用加密保护;五、通过同步中心查看冲突文件并保留所需版本。…

    2026年10月28日 • 用户投稿
    700
  • Java浮点数字面量:解决‘double不能转换为float’的类型不匹配问题

    Java浮点数字面量:解决‘double不能转换为float’的类型不匹配问题Java浮点数字面量:解决‘double不能转换为float’的类型不匹配问题Java浮点数字面量:解决‘double不能转换为float’的类型不匹配问题Java浮点数字面量:解决‘double不能转换为float’的类型不匹配问题

    本文深入探讨java中浮点数字面量从double到float的类型转换问题。当尝试将默认类型为double的浮点数(如10.5)直接赋值给float变量时,会引发类型不匹配错误。教程将详细解释错误原因,并提供两种主要解决方案:使用’f’或’f’后缀明确…

    2026年10月28日 • 用户投稿
    000
  • JavaScript中的Promise使用与源码解析_javascript异步

    JavaScript中的Promise使用与源码解析_javascript异步JavaScript中的Promise使用与源码解析_javascript异步JavaScript中的Promise使用与源码解析_javascript异步JavaScript中的Promise使用与源码解析_javascript异步

    Promise通过状态机解决异步回调地狱,其核心为三种不可逆状态与then链式调用,借助微任务实现异步执行,并通过resolvePromise处理返回值,支持链式传递与错误捕获。 Promise 是 JavaScript 中处理异步操作的核心机制之一。它解决了传统回调函数带来的“回调地狱”问题,让异…

    2026年10月28日 • 用户投稿
    000
  • 电脑重启后所有设置都恢复默认了

    电脑重启后所有设置都恢复默认了电脑重启后所有设置都恢复默认了电脑重启后所有设置都恢复默认了电脑重启后所有设置都恢复默认了

    答案:电脑重启后设置恢复默认通常由账户类型、配置损坏、策略限制、存储问题或还原软件导致。首先确认是否使用Microsoft账户登录,避免因本地账户无法同步设置;若用户配置文件损坏,可尝试创建新账户迁移数据;企业或学校设备可能受组策略或域控限制,需联系IT管理员确认是否启用系统重置策略;检查硬盘健康状…

    2026年10月28日 • 用户投稿
    000
  • sublime如何折叠或展开指定层级的代码 _sublime代码层级折叠展开方法

    sublime如何折叠或展开指定层级的代码 _sublime代码层级折叠展开方法sublime如何折叠或展开指定层级的代码 _sublime代码层级折叠展开方法sublime如何折叠或展开指定层级的代码 _sublime代码层级折叠展开方法sublime如何折叠或展开指定层级的代码 _sublime代码层级折叠展开方法

    Sublime Text支持代码折叠以提升浏览效率。1. 将光标置于代码块内,用Ctrl+Shift+[(Win/Linux)或Cmd+Option+[(Mac)折叠,反向操作展开;2. 按缩进层级批量折叠,如Ctrl+K, Ctrl+2展开前两层,Ctrl+K, Ctrl+J展开全部;3. 点击行…

    2026年10月28日 • 用户投稿
    100
  • 更新显卡驱动后游戏掉帧严重

    更新显卡驱动后游戏掉帧严重更新显卡驱动后游戏掉帧严重更新显卡驱动后游戏掉帧严重更新显卡驱动后游戏掉帧严重

    更新显卡驱动后游戏掉帧可能因兼容性、设置重置或安装问题导致。1. 回滚至稳定旧版驱动或下载WHQL认证版本解决兼容性问题。2. 检查显卡控制面板3D设置,确保电源模式为最高性能、垂直同步关闭,并确认游戏内图形设置正常及使用独立显卡运行。3. 使用DDU工具在安全模式下彻底卸载驱动并执行清洁安装,避免…

    2026年10月28日 • 用户投稿
    200
  • windows10如何解决U盘插入电脑后不显示盘符_windows10U盘识别故障排查方法

    windows10如何解决U盘插入电脑后不显示盘符_windows10U盘识别故障排查方法windows10如何解决U盘插入电脑后不显示盘符_windows10U盘识别故障排查方法windows10如何解决U盘插入电脑后不显示盘符_windows10U盘识别故障排查方法windows10如何解决U盘插入电脑后不显示盘符_windows10U盘识别故障排查方法

    U盘无盘符因未分配驱动器号或识别异常,可通过磁盘管理分配盘符、更新USB驱动、CHKDSK修复文件系统、禁用USB暂停设置、删除注册表隐藏限制五种方法解决。 如果您将U盘插入电脑后,发现文件资源管理器中没有显示盘符,无法访问其中的数据,这通常是因为系统未为U盘分配驱动器号或存在识别异常。此类问题可能…

    2026年10月28日 • 用户投稿
    300
  • 解决LWJGL中JNI版本不兼容导致的GLFW崩溃问题

    解决LWJGL中JNI版本不兼容导致的GLFW崩溃问题解决LWJGL中JNI版本不兼容导致的GLFW崩溃问题解决LWJGL中JNI版本不兼容导致的GLFW崩溃问题解决LWJGL中JNI版本不兼容导致的GLFW崩溃问题

    本文针对lwjgl在glfw窗口创建过程中遇到的“unsupported jni version detected”及“exception_access_violation”崩溃问题,深入分析了其根本原因。通过详细解析`glfwcreatewindow`函数的参数误用,特别是第四个参数应为监视器指针…

    2026年10月28日 • 用户投稿
    2200
  • 服务端JavaScript数据库连接池管理

    服务端JavaScript数据库连接池管理服务端JavaScript数据库连接池管理服务端JavaScript数据库连接池管理服务端JavaScript数据库连接池管理

    数据库连接池通过复用连接提升Node.js应用性能,避免频繁创建销毁连接的开销。使用mysql2等库可配置连接池,合理设置最大连接数、超时时间等参数,并通过try…finally确保连接释放,防止泄露。监听事件和异常处理进一步保障稳定性,正确管理连接池是高效数据库交互的关键。 在服务端使…

    2026年10月28日 • 用户投稿
    000
  • windows怎么查看电脑功耗_Windows电脑功耗查看方法

    windows怎么查看电脑功耗_Windows电脑功耗查看方法windows怎么查看电脑功耗_Windows电脑功耗查看方法windows怎么查看电脑功耗_Windows电脑功耗查看方法windows怎么查看电脑功耗_Windows电脑功耗查看方法

    可通过Windows电源诊断报告查看功耗估算,路径为C:windowssystem32energy-report.html;2. 任务管理器可按能耗状态排序识别高耗电进程;3. HWiNFO等工具能实时监控CPU、GPU等硬件功耗;4. 使用智能插座或功率计测量整机实际功耗,获取不同负载下准确数据。…

    2026年10月28日 • 用户投稿
    300
  • 在Java中如何实现类的解耦设计

    在Java中如何实现类的解耦设计在Java中如何实现类的解耦设计在Java中如何实现类的解耦设计在Java中如何实现类的解耦设计

    通过接口抽象、依赖注入、开闭原则和事件机制实现Java类解耦,使系统各模块依赖于抽象而非具体实现,提升可维护性与扩展性。 在Java中实现类的解耦设计,核心目标是降低类之间的依赖程度,提升代码的可维护性、可测试性和可扩展性。通过合理的设计原则和模式,可以让系统各部分独立变化,互不影响。 使用接口进行…

    2026年10月28日 • 用户投稿
    000
  • JavaScript浮点数计算精度问题及解决方案

    JavaScript浮点数计算精度问题及解决方案JavaScript浮点数计算精度问题及解决方案JavaScript浮点数计算精度问题及解决方案JavaScript浮点数计算精度问题及解决方案

    JavaScript浮点数精度问题源于IEEE 754标准,0.1+0.2!==0.3因二进制无法精确表示十进制小数,导致计算误差;可通过Number.EPSILON比较、整数换算、toFixed或decimal.js等方法规避。 JavaScript中的浮点数计算精度问题,是很多开发者在处理数学运…

    2026年10月28日 • 用户投稿
    000
  • Win10菜单变回Win7风格

    Win10菜单变回Win7风格Win10菜单变回Win7风格Win10菜单变回Win7风格Win10菜单变回Win7风格

    右键单击任务栏的空白处,从弹出菜单中选择“任务栏设置”,进入相关设置页面。 在设置窗口中,于左侧列表点击“开始”选项,进入开始菜单的个性化设置界面。 吉卜力风格图片在线生成 将图片转换为吉卜力艺术风格的作品 121 查看详情 进入“开始”设置后,在右侧找到“以全屏方式显示‘开始’菜单”这一项,将其开…

    2026年10月28日 • 用户投稿
    100
  • 电脑蓝屏代码0x0000007b解决方法

    电脑蓝屏代码0x0000007b解决方法电脑蓝屏代码0x0000007b解决方法电脑蓝屏代码0x0000007b解决方法电脑蓝屏代码0x0000007b解决方法

    蓝屏代码0x0000007b主因是系统无法访问启动设备,常见于硬盘模式变更或引导损坏。1. 将BIOS中SATA模式从AHCI改为IDE可快速解决模式不匹配问题;2. 使用Windows安装盘执行启动修复能恢复损坏的引导记录;3. 通过命令提示符运行bootrec工具重建BCD配置;4. 检查硬盘连…

    2026年10月28日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信