ES2015 箭头函数

JS:ES6(ES2015)新特性之常量、箭头函数、解构赋值 几个概念 1、JavaScript VS ECMAScript ECMAScript 一种标准 JavaScript 一种标准的实现 2、ES6 == ES2015 ES6 版本号 ES2015 发布年份 3、新特性 常量 Const 箭头函数 Arrow Function 解构赋值 Desctructuring 4、准备工具 开发工具 VSCode 插件 Live Server 浏览器 Chrome const常量 // ES3声明常量,可以被修改 var BASE_NAME = "Tom"; BASE_ 阅读详情

箭头函数

在 ECMAScript2015 简化了函数表达式的定义方式,允许使用 => 符号来定义函数,称为箭头函数。这种函数一来简化了函数的定义,二来多了一些特性。

在 ECMAScript2015 之前使用函数表达式定义函数需要使用 function 关键字进行定义,如下代码所示:

function inc(number) {
  return number + 1
}

在 ECMAScript2015 之后可以使用箭头函数来定义一个完全相同的函数,如代码所示:

const inc = n => n + 1

此时会发现相比于 ECMAScript2015 之前的函数表达式,箭头函数确确实实简化了定义函数的代码。箭头函数的语法结构如下图所示:

在这里插入图片描述

如果函数的参数列表存在多个参数的话,也可以使用圆括号进行定义。如下代码所示:

const inc = (n, m) => n + 1

如果函数的函数体只有一条语句,那这条语句将作为该函数的返回值进行返回。所以,如果打印上述箭头函数的调用结果的话,如下所示:

101

如果函数的函数体具有多条语句的话,也可以使用花括号进行包裹。如下代码所示:

const inc = (n, m) => {
  console.log('inc invoked')
  n + 1
}

console.log(inc(100))

上述代码的运行结果如下:

inc invoked
undefined

需要注意的是,如果使用花括号将函数体进行包裹之后,箭头函数的默认返回值为 undefined,需要人为定义 return 语句。如下代码所示:

const inc = (n, m) => {
  console.log('inc invoked')
  return n + 1
}

使用箭头函数最主要的变化就是极大地简化了回调函数的编写。比如定义一个成员都是数字的数组,筛选出其中的奇数。如果是 ECMAScript2015 之前的回调函数,如下代码所示:

const arr = [1, 2, 3, 4, 5, 6, 7]

const result = arr.filter(function (item) {
  return item % 2
})

console.log(result)

如果使用 ECMAScript2015 之后的箭头函数作为回调函数,如下代码所示:

const arr = [1, 2, 3, 4, 5, 6, 7]

const result = arr.filter(i => i % 2)

console.log(result)

对比之后很容易发现相比 ECMAScript2015 之前的回调函数,箭头函数使得代码更简洁,而且更易读。

箭头函数与 this

相比于普通的函数,箭头函数还有一个很重要的变化,就是不会改变 this 的指向。比如说定义一个 person 对象,在该对象中定义一个 name 属性,再定义一个 sayHi() 方法,并且在该方法中打印 name 属性的值。如下代码所示:

const person = {
  name: '前端课湛',
  sayHi: function () {
    console.log(`hi, my name is ${this.name}`)
  }
}

person.sayHi()

上述代码的运行结果如下:

hi, my name is 前端课湛

从上述打印结果可以看到,普通函数内部的 this 始终指向调用该函数的对象。如果将 person 对象中的 sayHi() 方法的定义改为箭头函数,如下代码所示:

const person = {
  name: '前端课湛',
  sayHi: () => {
    console.log(`hi, my name is ${this.name}`)
  }
}

person.sayHi()

上述代码的运行结果如下:

hi, my name is undefined

从上述打印结果可以看到,此时的 this.name 的值为 undefined。这就是箭头函数和普通函数之间最主要的区别,在箭头函数当中没有 this 的机制。所以,箭头函数不会改变 this 的指向。也就是说,在函数外部的 this 指向什么,在函数内部的 this 就指向什么,任何情况下都不会改变。

再比如为 person 对象新增一个 sayHiAsync() 的方法,在该方法中利用 setTimeout() 函数进行延迟执行。如下代码所示:

const person = {
  name: '前端课湛',
  sayHi: () => {
    console.log(`hi, my name is ${this.name}`)
  },
  sayHiAsync: function () {
    setTimeout(function () {
      console.log(this.name)
    }, 1000)
  }
}

person.sayHiAsync()

这里可以看到定义 sayHiAsync() 方法使用了普通函数方式,调用该方法之后的结果如下:

undefined

之所以是这样的结果的原因是,在执行 setTimeout() 函数时会将内部的函数放置在全局作用域中进行调用,而调用该函数时的 this 指向全局对象,而不是 person 对象。

在 ECMAScript2015 之前想要解决这样的问题,通常会使用闭包的方式在 sayHiAsync() 方法中进行一个局部变量先来存储 this 所指向的 person 对象。如下代码所示:

const person = {
  name: '前端课湛',
  sayHi: () => {
    console.log(`hi, my name is ${this.name}`)
  },
  sayHiAsync: function () {
    _this = this

    setTimeout(function () {
      console.log(_this.name)
    }, 1000)
  }
}

person.sayHiAsync()

上述代码的运行结果如下:

前端课湛

如果使用箭头函数来解决上述问题的话,就简单了很多。如下代码所示:

const person = {
  name: '前端课湛',
  sayHi: () => {
    console.log(`hi, my name is ${this.name}`)
  },
  sayHiAsync: function () {
    setTimeout(() => {
      console.log(this.name)
    }, 1000)
  }
}

person.sayHiAsync()
PaddleOCR实战:如何在CentOS 8.5上搭建高性能OCR识别环境 本文详细介绍了在CentOS 8.5系统上搭建高性能PaddleOCR识别环境的完整指南。从系统环境准备、PaddlePaddle框架部署到PaddleOCR的定制化安装与性能优化,提供了针对生产环境的解决方案,包括GPU/CPU环境配置、内核参数调优及常见问题排查,帮助用户实现高效OCR识别。 阅读详情

相关推荐

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决)

本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。

solidity8miner的博客 286

ES箭头函数

箭头函数 认识箭头函数 箭头函数结构:const/let 函数名 = (参数)=> { 函数体 } 将普通函数改写为箭头函数 const add=function(x,y){}; const add=(x,y)=>{}; 注意事项 单个参数:可以省略圆括号,无参或多个参数不能省略:const add = x =>{} 单行函数体:可以同时省略{}和return,多行函数体不能再简化:const add = (x,y)=>x+y 单行对象:返回单行对象,

qq_51591031的博客 1838

PHM算法与智能分析技术

PHM概述

柳杰的博客 1万+

se6--箭头函数

箭头函数提供了一种更加简洁的函数书写方式。基本语法是:参数 => 函数体 (参数) => {函数体} 语法注意事项 1、当箭头函数没有参数或者有多个参数,要用 () 括起来。 2、当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。 3、当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来 箭头函数中识别不了this、argumen

看见小狮子没 230

Keil 丢失编译器版本5、内核文件core_cm3.c报错

若用的是旧版本的core_cm3.c ,就使用编译器v5编译工程;若想用编译器v6,就更新4个相关的内核文件:(CMSIS:Cortex Microcontroller Software Interface Standard,ARM Cortex™ 微控制器软件接口标准)

qq_52804040的博客 6240

[NVME] CMBLOC-Controller Memory Buffer Location

CMBLOC-Controller Memory Buffer Location

jinyuya的博客 989

【ES规范】ES6 箭头函数详解

目录 一、基础语法 形参的情况 函数体的情况 二、箭头函数中的this 三、call apply 调用 四、不能使用argument 五、不能使用new  箭头函数(Arrow Function)表达式的语法比函数表达式更短,并且没有自己的this,arguments,super或 new.target。这些函数表达式更适用于那些本来需要匿名函数的地方,并且它们不能用作构造函数。 ...

焦糖花粥 1439

多智能体协作的本质是中介者模式,不是多开Agent

多智能体系统并非简单启动多个Agent实例,而是一种受控的、可验证的动态交互过程。其核心原理在于解耦Agent间直接依赖,通过中央中介者统一管理任务分发、协议转换、状态协调与故障兜底。这种架构显著提升系统的可观测性、容错性与可维护性,技术价值体现在强一致性保障(如金融订单原子操作)与灵活自治平衡(如边缘设备轻量协同)。典型应用场景包括电商客服协同、工业巡检调度、飞书/微信多渠道智能服务等。OpenClaw与Hermes Agent正是这一范式的工程落地代表,分别体现强中介与弱中介两种演进路径。

weixin_34151004的博客 358

ES6 新特性——箭头函数(Arrow Functions)

总结一下,箭头函数有两个主要特点:”

weixin_45267388的博客 882

大学生智能车竞赛初次尝试经验分享--1(硬件绘制电路,pcb部分)

本人机械电子专业大二暑假参加全国大学生智能车竞赛,之前参加过一些其他类型的比赛有一点基础,由于之前疫情影响所以做智能车比赛断代了,没有学长带也没有思路,从一开始的一头雾水逐渐摸索出我感觉比较实用的经验。 一.首先是硬件的准备工作: 1.硬件部分与要自己设计需要的电路制成pcb。推荐使用Altium Designer20,AD比较常用所以有多实用的教学视频,另外需要自己了解布线规则,包括信号线,电源线常用的宽度 一些电源电路,驱动电路建议用multisim仿真,没有问题再进行制版 单片机有关的需要仿真

weixin_52679034的博客 9833

《无线传感网络 matlab》:从入门到实践

这就是如何使用Matlab建立一个简单的无线传感网络并进行仿真的方法。当然,这只是一个入门级的示例,真正的无线传感网络可能会更加复杂和庞大。首先,我们需要创建一个无线传感网络的基础结构。接下来,我们需要定义一个数据包的格式,以便节点之间可以交换信息。无线传感网络是一种由无线传感器节点组成的、自组织的网络。现在,我们可以开始编写节点代码了。我们将使用Matlab提供的工具箱来构建一个简单的无线传感网络,并对其进行仿真和分析。现在,我们可以将这个节点复制9次,以创建一个包含10个节点的无线传感网络。

NoerrorCode的博客 296

ES2015 箭头函数( Arrow functions ) 与 this

箭头函数没有this的机制,箭头函数不会改变this的指向 第一个例子 const person = { name:'tom', sayHi:function(){ console.log(`hi,my name is ${this.name}`) } } person.sayHi()// hi,my name is tom const person = { name:'tom', sayHi:()=>{ console.log(`hi,my name is

路遇惊喜 308

Python爬取小红书种草商品评论数据:从入门到实战全攻略(附反爬+情感分析方案)

Python爬取小红书种草商品评论数据,核心是“抓包找到正确的接口+处理登录验证+合理的反爬策略”。新手不用一开始就追求多笔记批量爬取和情感分析,先把单笔记的评论抓取和存储跑通,再逐步扩展功能。我做的这个系统现在每天帮朋友爬取3-5款美妆产品的评论,自动做情感分析和关键词提取,她再也不用手动翻评论了,效率提升了80%。如果你们在开发中遇到具体问题,比如接口找不到、Cookie过期、IP被封,都可以在评论区留言,我会一一解答。后续也可以出一期小红书笔记种草数据爬取的教程,帮助大家更全面地分析竞品数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1349

es2015箭头函数的this

摘自https://www.cnblogs.com/chenxygx/p/6509564.html,谢谢博主的分享! 转载于:https://www.cnblogs.com/QMM2008/p/9543766.html

weixin_30273501的博客 92

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

es6(es2015)中比较难理解的箭头函数

es6的代码其实是在原先es5基础上的一次高级封装,最终es6会编译成es5使用 es2015的介绍 箭头函数编译后的代码 es2015的官方介绍,babel编译 对英文文档不熟的话,可以在chrome浏览器里右键翻译成中文 ...

qq_36981190的博客 225

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

002.ES2015和ES2016新特性--箭头函数.md

1. ES2015中的箭头函数 JavaScript有一级函数的特性,也就是说,函数像其他值一样可以当成参数传来传去。 var result = [1,2,3].reduce(function(total, current){ return total + current; }, 0) //6; 使用箭头函数改造一下: var result = [1,2,3].reduce((totoal...

weixin_30646315的博客 113

RDP Wrapper 完整指南:让 Windows 家庭版变身多人远程桌面主机

RDP Wrapper 是一款免费开源工具,它不改系统文件就能让 Windows 家庭版等系统当远程桌面主机,还支持多人同时连接。 上回出差时,你想从公司那台 Windows 10 家庭版主机里取一份文件,用 mstsc.exe(Windows 自带远程桌面客户端)一连,对面"允许远程桌面连接"的复选框却是灰色的,点了没反应;换成一台能用的专业版机器,同事一连接,你的会话又被顶下线。这类问题出在

gitblog_00523的博客 378

ES2015入门系列3-箭头函数

箭头函数(Arrows), 是用新的 => 语法书写的匿名函数, 如: [1, 2, 3].map(n => n + 1); 等同于下面使用ES5的写法: [1, 2, 3].map(function(n) { return n + 1; }); 可能一开始无法接受,但慢慢的会发现箭头函数带来的快感不言而喻。作为一个PHP...

weixin_34356310的博客 196

CoffeeScript 2 中 Fat Arrow(`=>`)的破坏性变更:从 `this`/`arguments` 改写到原生 ES2015 箭头函数

**导读**:CoffeeScript 2 将 `=>`(fat arrow / bound function)从 CoffeeScript 1.x 的"编译期改写 `this`"策略,切换为直接输出 ES2015 原生箭头函数。这一变更最核心、最容易踩坑的地方在于:**ES2015 箭头函数没有自己的 `arguments` 对象**。本文以 [documentation/sections/br

gitblog_01132的博客 342

Shiro+Redis幽灵Session排查:前后端分离下匿名访问为何创建Session

在前后端分离架构中,认证与授权是保障系统安全的基础机制。其核心原理在于通过过滤器链对请求进行拦截,并借助Session或Token维护用户状态。然而,当Session管理配置不当时,匿名请求可能触发不必要的Session创建,导致Redis内存持续增长,影响系统稳定性。这一技术细节在Spring Boot与Shiro整合场景中尤为常见,尤其在高并发或压测环境下,幽灵Session问题会显著放大。本文基于真实案例,深入剖析Shiro在认证失败流程中创建Session的根因,并提供可落地的优化方案,帮助开发者规

weixin_34234721的博客 385

ES2015 中的箭头函数和词法 this

箭头函数是使用=>语法对函数定义的简写。它们在语法上类似于 C#,Java 8 和 CoffeeScript 中的相关特性。它们支持表达式(Expression bodies)和函数体(Statement bodies)。与函数不同,箭头函数与其上下文代码共享相同的词法this(愚人码头注:箭头函数并没有自己的this,它的this是派生而来的,根据“词法作用域”派生而来)。如果箭头函数在另一

打杂人-aerchi 1345

ES6/ES2015学习笔记

ES6/ES2015学习笔记概述语法Arrow Function箭头函数(=>) 概述 自用ES6/ES2015学习笔记。 语法 Arrow Function箭头函数(=>) //1. 基本用法: x => x * x //相当于 function (x) { return x * x; } //2. 包含多条语句,不能省略{ ... }和return: x => { if (x > 0) { return x * x; }

qq_41113339的博客 262

JavaScript学习之ES6 ES2015学记笔记(六)-箭头函数(Arrow Function)

本节学习使用ES6中的新功能,箭头函数,在Java,C#中已经运用广泛。 虽然在JavaScript诞生之初就存在箭头函数, 箭头序列-->单行注释的一部分。在 HTML 中-->之前的字符是注释的一部分,而在 JS 中-->之后的部分才是注释 函数表达式无处不在 lambda表达式 // 六种语言中的简单函数示例 function (...

Three_ST的博客 239

【译】Learn ES2015——箭头函数

原文:https://babeljs.io/learn-es2015/ 理解也许有偏差,欢迎指正 箭头函数 不同于函数,箭头函数和包裹它的代码拥有同一个this。如果一个箭头函数在一个function里,它共享父函数的arguments。 // Expression bodies var odds = evens.map(v => v + 1); var nums = eve...

weixin_30699465的博客 147

ECMAScrip 与 ES2015(ES6):JavaScript 现代化编程的里程碑

ECMASCript(简称 ECMAScript)是一种标准化的脚本语言规范,由 ECMA 国际组织制定。它定义了 JavaScript 的语法、语义和标准库,确保不同浏览器和环境中的 JavaScript 实现具有一致性。ECMASCript 的第一个版本于 1997 年发布,随后不断更新和完善。ECMASCript 和 ES2015(ES6)为 JavaScript 带来了巨大的变革,不仅提升了代码的可读性和可维护性,还增强了语言的功能和表达能力。

AI 爪客,专注 AI 智能体与 Skill 研发落地,斩获腾讯云、讯飞、小米等多场 AI 赛事奖项,分享 Agent 实战干货与工程化经验。 1351

ES5、ES6和ES2015有什么区别?

是ECMScript的第六个版本,也成为ES2015,发布于2015年,引入了许多新的语言特性和语法糖。指的是ECMScript的第五个版本,发布于2009年,是目前最广泛使用的JavaScript版本。是ES6的官方名称,但是由于ES6引入了太多的新特性,因此人们通常使用ES2015来指代ES6。总的来说,ES6引入了许多新的特性和语法糖,使得JavaScript的编程体验更加现代化和高效。新的默认参数和剩余参数语法,使得函数的定义和调用更加灵活。新的模块化系统,使得代码的组织和管理更加容易。

m0_69892739的博客 2841

Duktape ECMAScript兼容性:从ES5到ES2015+的完整支持

Duktape作为一款轻量级、可嵌入的JavaScript引擎,在ECMAScript标准兼容性方面提供了从ES5到ES2015+的完整支持,为开发者带来现代化的JavaScript开发体验。💡 [![Duktape引擎架构](https://raw.gitcode.com/gh_mirrors/du/duktape/raw/50af773b1b32067170786c2b7c661705ec

gitblog_00358的博客 1071
上一篇: ES2015 函数的参数默认值与剩余参数
下一篇: ES2015 对象字面量增强与扩展方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值