ES6 箭头函数 Arrow Function

news2024/11/18 3:48:26

 

前言
1. ES6 前定义函数
2. ES6 箭头函数语法
3. ES6 箭头函数返回值
4. 箭头函数中的 this 到底是谁 ?

前言


ES6 新增了一种新的函数: 箭头函数 Arrow Function

箭头函数相当于匿名函数,简化了函数定义,将原函数的 function 关键字和函数名都删掉,并使用 => 连接参数和函数体

1. ES6 前定义函数


 
  1. // function 关键字
  2. function add(num1, num2) {
  3. return num1 + num2;
  4. }
  5. // 函数表达式
  6. const sub = function (num1, num2) {
  7. return num1 - num2;
  8. }
  9. // 对象字面量中定义函数
  10. const obj = {
  11. mul: function (num1, num2) {
  12. return num1 * num2;
  13. },
  14. div(num1, num2) {
  15. return num1 / num2;
  16. }
  17. }

2. ES6 箭头函数语法


当没有参数时, 可以定义为以下形式

 
  1. const test = () => {
  2. }

当只有一个参数时,括号可以省略。但是,如果这个参数是解构赋值,括号不能省略

 
  1. const test = res => {
  2. console.log(res);
  3. }
  4. const test = ({ code, msg }) => {
  5. console.log(res);
  6. }

当有多个参数时,括号不能省略

 
  1. const test = (num1, num2) => {
  2. return num1 + num2;
  3. }

当函数体只有一行语句时,可以省略 {}

 
  1. const test = (num1, num2) => num1 + num2;

使用箭头函数的场景: 闭包函数

 
  1. setTimeout(() => {
  2. }, 1000)

3. ES6 箭头函数返回值


当方法体只有一条语句时可以省略花括号

 
  1. // 普通写法
  2. // const math = (num1, num2) => {
  3. // return num1 + num2
  4. // }
  5. // 省略 {}
  6. const math = (num1, num2) => num1 + num2

当箭头函数需要返回一个数据时,可以使用下面写法

返回值数据类型是 字符串,数组,布尔值,=> 后面直接跟上数据即可,返回值如果是键值对形式的对象,需要使用 ({})

 
  1. const demo = {
  2. // 返回值是 []
  3. a1: () => [],
  4. // 返回值是 'abc'
  5. a2: () => 'abc',
  6. // 返回值是 true
  7. a3: () => true,
  8. // 返回值是键值对的对象时 需要使用 ({})
  9. // 因为使用 () => {} , {} 会被当作方法体的定界符
  10. a4: () => ({
  11. name: 'liang'
  12. }),

箭头函数直接返回一个数据的写法,多用于 vue,uniapp 开发中

 
  1. export default {
  2. name: "my-search",
  3. props: {
  4. config: {
  5. type: Object,
  6. default: () => ({
  7. height: 36,
  8. }),
  9. },
  10. },
  11. }

4. 箭头函数中的 this 到底是谁 ?


箭头函数中的 this 指向问题标准答案: 向外层作用域中一层层查找 this,直到有 this 的定义

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

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

相关文章

学习.NET MAUI Blazor(三)、创建.NET MAUI Blazor应用并使用AntDesignBlazor

大致了解了Blazor和MAUI之后,尝试创建一个.NET MAUI Blazor应用。 需要注意的是: 虽然都叫MAUI,但.NET MAUI与.NET MAUI Blazor 并不相同,MAUI还是以xaml为主,而MAUI Blazor则是以razor为主。 这个系列还是以MAUI Bla…

23. 【gRPC系列学习】gRPC安全认证-JWT认证

JWT 即 JSON Web Token,是用 JSON 形式安全传输信息的方法。本节介绍JWT与gRPC结合,关于JWT交互流程的介绍参考文末的链接。 1. 使用JWT客户端与服务端交互 1)客户端使用用户名、密码发送给服务端 2)服务端返回JWT数据,返回数据由三部分组成 Header:TOKEN 的类型,就是JW…

截至2022年12月共计451个信息安全国家标准 汇总

写在前面 早年刚参加信息安全工作更多的学点皮毛技术,到处找安全工具,跟踪poc,拿到一个就全网扫一遍,从来没有想过,系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

二本跨专业自学编程及程序员就业之路——20W社招进银行

自学编程的道路 先做个自我介绍,我是一名普通二本院校的学生。在广州上学,21年毕业,非科班出身。上大学之前,很少接触电脑,连QQ都是别人送我的,当时还开心了好一阵子。 大学的时候,开始接触的第…

对美国学校制度的一点儿思考

本文作者在美国生活了几十年,随着对这个国家的深入了解,发现原来对美国的一些认知上有偏差。所以其根据在美的所见所闻,结合中国国内的情况,做了分析对照,在此知识人网小编仅摘录关于美国学校制度的内容以飨读者。 美国…

喜报 | 知道创宇ZoomEye Pro获评ISC 2022创新能力百强,实力入选“攻击面与资产管理领域”创新产品榜单!

12月21日,ISC 2022数字安全创新能力百强颁奖典礼在北京举行。 知道创宇的 ZoomEye Pro 以其先进的网络安全技术和创新产品能力,通过层层筛选,从众多产品中脱颖而出,入选“攻击面与资产管理领域”的创新产品榜单!知道创…

IDEA运行缓慢,闪退解决方式——增加堆内存

目录方法一:通过IDE修改配置方法二:使用ToolBox进行设置方法三:直接修改vmoptions文件如果遇到速度变慢的情况,可能需要增加内存堆。方法一:通过IDE修改配置 help–>Change Memory Setting–>修改为一个合适的值…

机器学习算法基础——决策树

文章目录决策树算法的定义发展历程适用范围及其优缺点适用范围优点缺点代码实现决策树算法的定义 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险&…

系统设计场景题—MySQL使用InnoDB,通过二级索引查第K大的数,时间复杂度是多少?

系统设计场景题—MySQL使用InnoDB,通过二级索引查第K大的数,时间复杂度是多少?前言明确场景对齐表的结构分析时间复杂度执行一条 select 语句,期间发生了什么?分析性能的瓶颈如何做出优化一、从业务上绕过二、使用覆盖…

史上最强人工智能ChatGPT 到底有多强?

ChatGPT 已经踏上了它的成神之路,这绝对是我所用过的,我相信也是你用过的,最让人震撼的人工智能产品,比起 AI 画画,它甚至更具颠覆性。只用短短十分钟,它就耗尽了我毕生所学的感叹词,最后只留下…

I2S和I2C分别如何连接pad

GPIO一共有8种输入输出模式。可参考: GPIO内部结构和各种模式_cy413026的博客-CSDN博客读了该篇文章可以知道:1.gpio可以直接用cpu通过寄存器控制读写2.可以直接与片内外设连接 受外设控制(I2C)3.gpio的push-pull和OD/OC结构4.上下拉在输入输出的使用5.…

微信小程序之实时聊天系统——页面介绍

目录 系统结果展示: 系统的页面说明: 1.我们首先再app.json中创建四个tabBar页面(消息、联系人、用户列表、我的) 2.消息页面: 3.联系人页面: 4.用户列表页面: 5.我的页面: 欢…

buildroot 勾选alsa - utils编译后未 /bin 包含

alsa-lib 这个库在 buildroot 已经默认编译进去我们可以不用管,我们只需要使能 alsa-utils 就 行了,还是在 buildroot 的源码目录下,运行以下命令进入图形化界面配置:make menuconfig 按照以下路径进入配置我们的 alsa-utils&…

【SpringMVC】请求参数的绑定

1.绑定说明 1.1 绑定的机制 我们都知道&#xff0c;表单中请求参数都是基于 keyvalue 的。SpringMVC 绑定请求参数的过程是通过把表单提交请求参数&#xff0c;作为控制器中方法参数进行绑定的。 例如&#xff1a; <a href"account/findAccount?accountId10"&…

Vulnhub靶机:PWNOS_ 2.0 (PRE-RELEASE)

目录介绍信息收集网站探测漏洞发现提权搜寻数据库配置文件SSH爆破第2种打法网站探测Sql注入&#xff08;手工&#xff09;Sql注入&#xff08;sqlmap&#xff09;读取文件写入文件提权参考介绍 系列&#xff1a;pWnOS&#xff08;此系列共2台&#xff09; 发布日期&#xff1a…

【前端-React Native】移动端原生开发整合React Native Elements教程-安卓示例

目录一、移动开发和web开发的区别二、什么是React Native?三、如何实现安卓和IOS用一套代码开发四、React Native开发实战1. 安装Android studio2. 使用Expo创建工程3. 启动4. 使用UI框架React Active Elements5. 扩展&#xff1a;使用UI框架antd Design Mobile RN五、项目结构…

Hadoop综合项目——二手房统计分析(Hive篇)

Hadoop综合项目——二手房统计分析&#xff08;Hive篇&#xff09; 文章目录Hadoop综合项目——二手房统计分析&#xff08;Hive篇&#xff09;0、 写在前面1、Hive统计分析1.1 本地数据/HDFS数据导入到Hive1.2 楼龄超过20年的二手房比例1.3 四大一线城市各楼层地段的平均价格1…

没有基础转行学编程,靠谱吗?能找到工作吗?

在日常生活中&#xff0c;以及在知乎上&#xff0c;有很多人咨询职业生涯的抉择。他们大都对自己的职业现状不满意&#xff0c;打算学习编程成为一名程序员。 为什么想要做程序员&#xff1f; 答案五花八门&#xff0c;其中「工资高」「好找工作」「有职业发展」是很常见的理由…

代码质量管理平台实战| SonarQube 安装、配置及 JaCoCo、Maven 集成

SonarQube 是一个用于代码质量管理的开源平台&#xff0c;用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持&#xff0c;可以很方便地在持续集成中使用 SonarQube。此外&#xff0c; SonarQube 的插件还可以对 Java 以外的其他编程语言提供支持&…

请求量太大扛不住怎么办?进来学一招

hello&#xff0c;大家好呀&#xff0c;我是小楼。 上篇文章《一言不合就重构》 说了我最近重构的一个系统&#xff0c;虽然重构完了&#xff0c;但还在灰度&#xff0c;这不&#xff0c;在灰度过程中又发现了一个问题。 背景 这个问题简单说一下背景&#xff0c;如果不明白…