箭头函数与普通函数:谁更胜一筹?

在这里插入图片描述

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6
🍨 阿珊和她的猫_CSDN个人主页
🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》
🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • ❤介绍函数在编程中的重要性
    • ❤函数的定义和作用
    • ❤函数的重要性
    • ❤函数的应用
    • ❤总结
  • 二、箭头函数
    • 🤍定义
    • 🤍语法结构
    • 🤍自动绑定 this 关键字
    • 🤍简洁的语法
    • 🤍使用场景和示例
    • 🤍总结
  • 三、普通函数
    • 🥚定义
    • 🥚语法结构
    • 🥚函数调用
    • 🥚参数传递
    • 🥚返回值
    • 🥚作用域和闭包
    • 🥚使用场景和示例
    • 🥚总结
  • 四、箭头函数与普通函数的区别

一、引言

❤介绍函数在编程中的重要性

❤函数的定义和作用

  1. 定义:函数是一种将一组相关的代码封装在一起,并为其赋予一个名称的编程结构
  2. 作用:函数可以接受输入参数,并返回一个输出结果。

❤函数的重要性

  1. 代码复用:函数使得代码的复用成为可能。通过定义通用的函数,可以在不同的地方调用它们,避免了重复编写相同的代码。
  2. 抽象和封装:函数提供了一种抽象和封装的机制。它们将复杂的任务分解为较小的、独立的部分,使得代码更易于理解和维护。
  3. 模块化编程:函数有助于实现模块化编程。将代码划分为多个函数,可以更好地组织和管理代码,提高代码的可读性和可维护性。
  4. 逻辑分离:函数可以将相关的逻辑封装在一起,使代码的关注点分离。每个函数负责完成特定的任务,从而使代码更加清晰和易于理解。
  5. 提高可读性:通过使用有意义的函数名称和注释,可以提高代码的可读性。函数的封装和抽象也使得代码更容易被他人理解和修改。

在这里插入图片描述

❤函数的应用

  1. 算法和数据结构:函数常用于实现各种算法和数据结构,如排序、搜索和树等。
  2. 事件处理:在用户界面编程中,函数常用于处理用户事件,如点击、鼠标移动和键盘输入等。
  3. 业务逻辑:在应用程序中,函数用于实现业务逻辑和业务规则。

❤总结

函数在编程中扮演着至关重要的角色。它们提供了代码复用、抽象、封装和逻辑分离的能力,有助于提高代码的质量、可读性和可维护性。通过使用函数,程序员可以更高效地编写和组织代码,实现复杂的任务和业务逻辑。

二、箭头函数

🤍定义

箭头函数(Arrow Function)是 ES6 中引入的一种简洁的函数表达式语法
它使用 => 符号来定义函数,并且可以省略关键字如 functionreturn花括号

🤍语法结构

1. 基本语法:(param1, param2, ..., paramN) => expression

  • 参数:用圆括号括起来,可以有多个参数,用逗号分隔。
  • 返回值:使用 => 符号右侧的表达式表示函数的返回值。

2. 无参数的箭头函数:() => expression

  • 如果函数没有参数,可以省略圆括号。

3. 只有一个参数的箭头函数:param => expression

  • 如果函数只有一个参数,可以省略圆括号。

🤍自动绑定 this 关键字

箭头函数的一个重要特点是它会自动绑定 this 关键字
在箭头函数中,this 的值取决于它的上下文环境,而不是函数的调用方式。

🤍简洁的语法

箭头函数的语法非常简洁,减少了代码的冗余性。
它可以在一行中定义一个函数,并且可以省略关键字和花括号,使代码更加紧凑和易读。

🤍使用场景和示例

  1. 回调函数:箭头函数常用于作为回调函数,例如在事件处理、异步操作和迭代中
  2. 匿名函数:由于箭头函数的简洁性,它非常适合定义匿名函数,特别是在需要快速定义一个简单函数的情况下。

🤍总结

箭头函数是一种简洁的函数表达式语法,它使用 => 符号来定义函数,并可以省略关键字和花括号。箭头函数的特点包括自动绑定 this 关键字和简洁的语法。它常用于回调函数、匿名函数和需要快速定义简单函数的场景中。

三、普通函数

🥚定义

普通函数(Function)是一种用于执行特定任务或计算的可复用代码块
它接受输入参数,并通过执行一系列的语句来产生输出结果。

🥚语法结构

基本语法:

function name([param1, param2, ..., paramN]) {// 函数体[ statements; ]return [expression;]
}
  • 函数名:给函数赋予一个有意义的名称,用于调用函数。
  • 参数:用圆括号括起来,可以有多个参数,用逗号分隔。
  • 函数体:包含执行函数任务的代码语句。
  • 返回值:使用 return 关键字指定函数的返回值。如果没有返回值,可以省略 return 关键字。

🥚函数调用

通过使用函数名并在其后跟上圆括号中的参数来调用函数。
例如:functionName(param1, param2,...);

🥚参数传递

函数的参数可以是值、变量或表达式。
在函数调用时,将实际参数的值传递给函数的形式参数。

🥚返回值

函数可以通过 return 关键字返回一个值。
返回值可以是任何有效的 JavaScript 表达式。

🥚作用域和闭包

函数定义了自己的作用域,其中的变量和参数只能在函数内部访问。
闭包是指在函数内部创建的函数,能够访问到包含它的外部函数的变量和参数。

🥚使用场景和示例

  1. 计算和处理数据:普通函数可以用于执行数学计算、数据处理和转换等任务。
  2. 事件处理:在用户界面编程中,普通函数常用于处理用户事件,如点击、鼠标移动和键盘输入等。
  3. 业务逻辑:在应用程序中,普通函数用于实现业务逻辑和业务规则。

🥚总结

普通函数是一种可复用的代码块,它接受输入参数并通过执行一系列语句来产生输出结果。普通函数可以通过调用函数名并传递参数来执行。它们在编程中用于实现各种任务和逻辑,提供了代码复用和封装的能力。

四、箭头函数与普通函数的区别

以下是关于箭头函数与普通函数的区别的详细总结:

比较项箭头函数普通函数
语法结构(param1, param2, …, paramN) => expression

() => expression
function name([param1, param2, …, paramN]) {
[ statements; ]
return [expression;]
}
this 关键字自动绑定,取决于上下文环境取决于函数的调用方式
参数省略如果只有一个参数,可以省略圆括号
如果没有参数,可以省略圆括号和箭头 =>
必须使用圆括号来定义参数
花括号的使用不需要花括号来定义函数体需要花括号来定义函数体和包含语句
返回值使用箭头 => 右侧的表达式作为返回值
如果没有返回值,可以省略箭头 => 和表达式
使用 return 关键字来指定返回值
作用域和闭包没有自己的作用域,使用词法作用域
可以创建闭包,因为它们可以访问包含它们的外部函数的变量和参数
定义自己的作用域,其中的变量和参数只能在函数内部访问
可以创建闭包,通过在函数内部创建函数并访问外部函数的变量和参数
简洁性语法简洁,减少了代码的冗余性语法相对复杂,需要更多的关键字和结构

通过比较,我们可以看出箭头函数在语法上更加简洁,并且可以自动绑定 this 关键字。然而,普通函数提供了更多的灵活性和控制能力,适用于更复杂的场景。根据具体的需求和代码风格,选择合适的函数类型来实现所需的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/182909.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark local模式的安装部署

安装与配置Spark开发环境。 相关知识 Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark拥有Hadoop MapReduce所具有的优点;但…

vuepress-----6、时间更新

# 6、时间更新 基于Git提交时间修改文字时间格式 moment # 最后更新时间 # 时间格式修改 下载库文件 yarn add momentconst moment require(moment); moment.locale(zh-cn)module.exports {themeConfig: {lastUpdated: 更新时间,},plugins: [[vuepress/last-updated,{trans…

BUUCTF [GXYCTF2019]BabyUpload 1详解(.htaccess配置文件特性)

题目环境:查看题目源码 SetHandler application/x-httpd-php 通过源码可以看出这道文件上传题目主要还是考察.htaccess配置文件的特性 倘若不先上传.htaccess配置文件,那么后台服务器就无法解析php代码 这个是需要注意的 .htaccess配置文件特性 概述来说…

【面试】css预处理器之sass(scss)

目录 为什么引入css预处理器 可读性 嵌套:关系明朗 选择器 属性 伪类‘’ 变量:语义明确 默认变量:美元符号 $ 变量名:值 !default 全局变量::global { $global-x: } 变量插值:#{} map键值对:$…

轻量封装WebGPU渲染系统示例<39>- emissive和arm纹理支持(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/DynamicShaderBuilding2.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: export class DynamicShaderBuildi…

python操作Mysql学习

文章目录 版权声明准备:MYSQL数据库数据库简介数据库分类数据库管理系统SQL语句关系型数据库中核心元素MySQL环境搭建Mysql数据类型数据完整性和约束MYSql基本操作登录和退出数据库命令数据库基本操作命令数据表基本操作命令数据表结构修改命令表数据操作命令Mysql查…

PCIe学习必读——《PCI Express System Architecture》

PCI Express (peripheral component interconnect express) 简称 PCIe,是一种高速串行计算机扩展总线标准。是一种全双工总线,使用高速串行传送方式,能够支持更高的频率,连接的设备不再像 PCI 总线那样共享总线带宽。PCIe目前发布…

数据结构-二叉树(2)

3.4堆的应用 3.4.1 堆排序 堆排序即利用堆的思想来进行排序,总共分为两个步骤: 1. 建堆 1.升序:建大堆; 2.降序:建小堆。 2. 利用堆删除思想来进行排序 这种写法有两个缺点: 1、先有一个堆的数据结构 …

微信小程序 老年人心血管健康知识科普系统

本系统的功能有管理员:个人中心,用户管理,热点信息管理,疾病管理,疾病类型管理,治疗管理,治疗类型管理,护理管理,护理类型管理,科普管理,科普类型…

如何利用轮廓系数(Silhouette Coefficient)来判断模糊c均值聚类FCM的聚类簇数量

文章目录 前言一、轮廓系数的计算方法二、具体流程 前言 轮廓系数(Silhouette Coefficient)是一种评价聚类效果的指标,它可以用于判断模糊C均值聚类的聚类簇数量。 一、轮廓系数的计算方法 对于每个数据点i,计算它属于每个聚类…

lightdb-ignore_row_on_dupkey_index

LightDB 支持 ignore_row_on_dupkey_index hint LightDB 从23.4 开始支持oracle的 ignore_row_on_dupkey_index hint, 这个hint是用来忽略唯一键冲突的。类似与mysql的 insert ignore。 语法如下: 在LightDB中ignore_row_on_dupkey_index的效果等同于o…

深入了解HMAC加密技术:原理、应用与实践

一、引言 在网络安全领域,消息认证码(MAC)是一种重要的技术手段。Hash-based Message Authentication Code(HMAC)作为其中的一种,凭借其简单、高效、安全的特性,广泛应用于各种网络通信场景。本…

k8s中批量处理Pod应用的Job和CronJob控制器介绍

目录 一.Job控制器 1.简介 2.Jobs较完整解释 3.示例演示 4.注意:如上例的话,执行“kubectl delete -f myJob.yaml”就可以将job删掉 二.CronJob(简写为cj) 1.简介 2.CronJob较完整解释 3.案例演示 4.如上例的话&#xf…

工艺系统所管理数字化实践

摘要 本文介绍了上海核工程设计研究院在数字化转型方面的实践,包括业务数字化和管理数字化两个方面。业务数字化方面,该院通过开发小工具改进工作流程。管理数字化方面,该院采用零代码平台集中管理管道力学信息相关模型和数据,并…

JeeSpringCloud uploadFile.jsp 文件上传漏洞复现

0x01 产品简介 JeeSpringCloud是一款免费开源的JAVA互联网云快速开发平台,微服务分布式代码生成的敏捷开发系统架构,项目代码简洁、注释丰富、上手容易、还同时集中分布式、分布式事务、微服务,同时包含许多基础模块和监控、服务模块,JeeSpri…

RabbitMQ消息模型之Work Queues

Work Queues Work Queues,也被称为(Task Queues),任务模型,也是官网给出的第二个模型,使用的交换机类型是直连direct,也是默认的交换机类型。当消息处理比较耗时的时候,可能生产消息…

供应链 | “利刃出鞘”——顶刊POMS论文解读:制造商借助电子商务部门入侵

论文解读者:肖善,温梓曦,张怡雯,杨子豪 编者按: 解密品牌商在线电商平台:组织结构、策略选择、三方共赢 Manufacturer encroachment with an e‐commerce division 原文作者信息 Shi, S., Wang, C., Ch…

微信小程序上传报错TypeError: Failed to fetch

上传之后报message:TypeError: Failed to fetch这个错误。 关掉项目 > 选择项目的ide界面右上有个齿轮设置 > 代理

嵌入式设备与PC上位机通信协议设计的几点原则

嵌入式设备在运行中需要设置参数,这个工作经常由PC机来实现,需要为双方通信设计协议,有代表性协议是如下三种: 从上表可以看到,一般嵌入式设备内存和运算性能都有限,因此固定二进制是首选通信协议。 一&am…

【智能算法】改进粒子群优化算法及对比分析

程序名称:改进粒子群优化算法及对比分析 实现平台:matlab 代码简介:基本粒子群算法(BPSO)中,每个优化问题的解都可以看作粒子在搜索空间中的位置,粒子通过飞行速度决定它们的搜索方向和搜索范围,粒子群通…