ES6 箭头函数

JS(第二十六)ES6语法中function 高级函数 阅读详情

箭头函数

箭头函数改变了this指向多年来的问题

回顾:this

  1. 通过对象调用函数,this指向对象
  2. 直接调用函数,this指向全局对象
  3. 通过new调用函数,this指向新创建的对象
  4. 通过apply,call,bind调用函数,this指向指定的数据
  5. DOM事件函数,this指向事件源

让我们来举个栗子


	//首先我们创建一个对象
	const obj = {
		count : 0,//声明一个属性0
		start : function () {
			setInterval(function () {//调用计时器
				this.count++;//每隔一秒++
				console.log(this.count);//输出
			}, 1000)
		}
	}
	obj.start()//执行此函数

这样看每次输出时是不是都会输出count++之后的值1, 2,3, 4,5但事实不是这样。
它每次输出的是NaN
在这里插入图片描述
为什么会是这样呢,那是因为在执行函数时是正常调用,函数指向的是obj,而函数里面的计时器调用时则不是直接调用的,而是window调用的,所以在执行时this默认指向window也就导致了输出时是NaN了,这是一个典型的this默认指向的问题。

以前我们怎么解决呢,一般是在this还未变化指向正确时,将this重新附给一个新的变量,但有时这样的嵌套多了,会非常的恶心,不但导致代码量臃肿不好看,而且这种this变量多了你就需要嵌套更多,声明更多,会很麻烦。

所以为了让我们使用this更加简洁,方便ES6出来了箭头函数

使用语法

箭头函数是一个表达式,理论上,任何使用函数表达式的场景都可以使用箭头函数。

完整语法:


	(参数一, 参数二, ...) =>{
		//函数体
	}

如果参数只有一个,可以省略小括号


	参数 => {
	
	}

如果箭头函数只有一条返回语句可以省略大括号,和return关键字


	参数 => 返回值

如果返回的是一个对象时
因为我们不可能返回一个带有大括号的表达式,会被认为是一个函数体,会出现问题。
所以只需要将返回的对象用小括号括起来就行,该返回语句会被认为是表达式


	参数 => (返回值)

此时我们就可以对上面的案例进行更改了


	const obj = {
		count : 0,
		start : function () {
			setInterval(() => {//把函数换成箭头函数
				this.count++;
				console.log(this.count);//输出
			}, 1000)
		}
	}
	obj.start()//执行此函数

而此时输出的就是正常的了
在这里插入图片描述

注意细节

  • 箭头函数的函数体中的this,取决于箭头函数,定义的位置的this指向,而与如何调用无关。
  • 箭头函数中,没有自己的this、arguments、new.target、如果使用了则使用的是函数外层的对应的
  • 箭头函数没有原型
  • 箭头函数不能作为构造函数

应用场景

  1. 临时使用函数,并不会可以调用它,比如
    1. 事件处理函数
    2. 异步处理函数
    3. 其他临时处理函数
  2. 为了绑定外层this的函数
  3. 在不绑定其他代码的情况下,保持代码的简洁

以上就是ES6 箭头函数的全部内容了,希望对你有用

星网锐捷语音网关密码重置恢复出厂设置 星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系... 阅读详情

相关推荐

ByteTrack参数调优全攻略:从原理到实战(含YOLOv8示例)

本文深入解析了ByteTrack多目标跟踪算法的核心原理与参数调优策略。通过拆解其独特的两阶段关联机制,并结合YOLOv8检测器,提供了针对不同应用场景(如拥挤行人、高速车辆)的精细化参数调整指南与实战示例,旨在帮助开发者解决ID切换、目标丢失等工程落地难题,提升跟踪系统的鲁棒性与实用性。

cheese的博客 322

ES6 JavaScript 函数详解

ES6 JavaScript 函数详解 1、函数概念 1.1 函数语法 1.1.1 示例 1.2 函数表达式 1.2.1 匿名函数 1.2.2 有名字的函数表达式-1 1.2.3 有名字的函数表达式-2 1.2.4 有名字的函数表达式-3(递归函数) 1.3 函数/匿名函数/函数表达式的差异 1.4 高阶函数 1.4.1 示例-计数器 counter 1.4.2 示例-计数器 counter(生成器版) 2、函数参数 2.1

Kimser 230

大彩串口屏+LUA避坑指南:从Flash读写到控件状态配置的5个常见问题

本文针对大彩串口屏的LUA脚本开发,深度剖析了Flash数据存储与控件状态配置中的5个常见陷阱。重点讲解了如何通过标志位安全初始化Flash、正确处理多字节数据转换,以及如何精准配置按钮与文本控件的状态与事件响应,帮助开发者提升开发效率与代码可靠性。

weixin_27945229的博客 243

JS与ES6的声明命令(2)- function

一 function声明 定义方式: function functionName( arg0, arg1,arg2,…){ 语句… } 调用方式 functionName ( arg0, arg1,arg2,… || 不带参数) 特点: 1、参数行为 ECMAScript的参数在内部是用一个数组来表示的,函数接收到的始终为这个类数组(arguments) 在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数 用方括号 [ ] +下标值来访问每一个

xiaoyangzhu的博客 230

8.9华为OD机试真题 新系统 - 查找最佳充电策略 (Java/Py/C/C++/Js/Go)

8.9华为OD机试真题 新系统 - 查找最佳充电策略 (Java/Py/C/C++/Js/Go)

算法大师! 1169

北斗导航 | SPP、RTK、RTD、PPP-RTK、PPP算法原理,公式及完整matlab代码

开发参考:SPP适合入门学习GNSS定位原理和最小二乘。RTK是工程高精度定位主流方案,但依赖基站。PPP适合无基站区域的广域高精度应用。PPP-RTK是融合两者优点的新一代技术,但系统复杂度最高。· 代码资源:raPPPid(VieVS PPP)是功能完整的MATLAB开源PPP工具箱,支持多系统PPP-AR。MATLAB GPS Toolbox 提供从SPP到PPP的完整功能实现。· 实际应用:农业自动驾驶、无人机航测通常使用网络RTK;大地测量、地壳形变监测常采用PPP事后处理;

尘世冰封的专栏 827

js--Es6箭头函数

作用 定义匿名函数 箭头左边放参数,右边放函数体; 形参情况 没有形参,小括号不能省 只有一个形参的时候,小括号可以省略,也可以不省略 两个及以上的小括号不能省略 函数体的情况 函数体只有一条语句或者表达式时候,省略也没问题,省略大括号自动返回结果 函数体不止一条语句,大括号不可以省略 需要在返回结果前加return 特点 简洁 没有自己的this,不是调用的...

别浪 560

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1393

ES6---箭头函数()=>{} 与function的区别

1.箭头函数与function定义函数的写法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, b)=>{ return a + b }; 2.this的指向: 使用function定义的函数,this的指向随着调用环境的变化而变化的,而箭头函数中的this指向是固定不...

Freedom的blog 7万+

把收款差异从扯皮变成闭环:SAP S/4HANA Dispute Resolution 模块到底解决什么问题?

本文摘要: SAP S/4HANA的争议解决模块(Dispute Resolution)通过标准化流程管理企业应收争议,解决发票与收款差异问题。核心是创建可追踪的Dispute Case工单,明确处理角色(Processor和Manager),并与财务系统联动实现自动清账。系统支持手工/自动创建争议工单,通过动态默认值减少错误,并最终实现争议金额归零的闭环管理。文中给出制造业客户扣款的完整处理案例,并强调组织落地需统一权限与目录。最后提供ABAP代码示例展示如何通过BAPI创建争议工单。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 165

uniapp - 解决控制台提示“同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示”,uniApp安卓/苹果App真机运行调试显示同步资源失败,无任何授权提示且无法连接

uni-app,报错,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,提示错误解决,HbuilderX,uniapp同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示同步失败,安卓基座调试,没有反应,真机没有提示怎么办,如何解决这个问题,苹果ios手机,电脑模拟器运行,adb连接,连接失败,报错出错,uniapp真机运行的时候显示同步资源失败,未得到同步资源的授权,plugins里面没有tools,找不到tools,还是不行,重新打基座

🏆 前端领域优质创作者 1万+

ES6基础:箭头函数

ES6基础系列(三)箭头函数 简要分析一个为什么会有箭头函数,它的意义是什么?

余光的博客 2万+

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

ES6箭头函数详解

ES6中允许使用=>来定义函数。箭头函数相当于匿名函数,并简化了函数定义。

前端工程师 · Vue 生态深耕者,专注多端与工程化 2053

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ES6之什么是箭头函数?

箭头函数是匿名函数,ES5匿名函数的语法糖;但又增加了ES5所没有的一些优点,接下来我们一起来看一看箭头: //ES5 var tt = function tt() { return 55 + 99; }; //ES6 var tt = () => 55 +99 是不是一对比,写法的差异就看出来了。ES6增加了箭头函数: let func = value => va...

weixin_40851188的博客 3417

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ES6箭头函数

ES6 允许使用“箭头”(=>)定义函数。          如下所示: var s= fn =>fn; // 等同于 ↓ var s = function (fn) { return fn; };         当箭头函数不需要参数或需要多个参数时,可以使用一个圆括号代表参数...

huangfuyk.的博客 5005

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ES6箭头函数介绍

ES6箭头函数介绍 1.箭头函数基本使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> // 箭头函数: 也是一种定义函数的方式 // 1.定义函数的方式: function const aaa = functi

Bruce小鬼 694

ES6 —— 箭头函数

ES——箭头函数,阮一峰大佬分析。

HuoZhiyan 的博客 1057

ES6箭头函数的缺点

ES6中箭头函数给我们带来了便利,写法很简洁,不用再定义this,因为箭头函数的this取决于上一级作用域。 但是它的缺点也是这些,this定义好了,太简洁有时候难以阅读。 在下面场景使用箭头函数会出现问题: 1.在对象中定义方法时使用箭头函数: var obj = { age:20, getAge:()=>{ return this.age } } obj.getAge...

u010007013的博客 3405

Es6箭头函数

通过事件直接调用匿名函数通过赋值的方式创建函数show();可以传参的箭头函数alert(a+b);show(12,6);alert(a+b);show(12,6);给下面数组排序// 正序排序// 普通方法return a-b;});// 改写为箭头函数return a-balert(arr);

Y3265660267的博客 1047

es6箭头函数

在es6中,推出了一个新语法 箭头函数; 以前定义一个函数,是这么定义的; let test=function(){ console.log('我是箭头函数'); }; 现在可以简化下,用箭头函数: let test=()=>{console.log('我是箭头函数')}; 然后假如函数体只有一条语句或者是表达式的时候{}可以省略 let test=()=>console.l...

小志的博客 494

ES6中箭头函数的this指向

一直以来对于ES6中箭头函数有些疑虑,其中一项就是this的指向问题,所以不敢放手去使用。因为跟之前我所熟悉掌握的函数内部this的指向是有些地方不同的,但是在箭头函数中this到底指向谁,这块儿模模糊糊的。所以为了搞清楚这个问题,就特意查阅了相关的资料,现总结下来。 在JavaScript语言里面,this的用途很广泛。在这里,对this的含义以及原理就不做解释和说明,因为本文的目的是阐明箭头函...

weixin_43739375的博客 3024

【ES6】箭头函数

箭头函数 箭头函数是ES6里面有个简写函数的语法方式 重点:箭头函数只能简写函数表达式,不能简写声明式函数 function fn(){}; //不能简写 const fun = function(){}; //可以简写 let obj = { fn :function(){}; //可以简写 } 语法:(函数的形参) => {函数体内要执行的代码} const fn = function(a,b){ console.log(a); console.log(b); } //可以使用箭

qq_45677671的博客 1363

ES6的箭头函数

箭头函数=> 一、基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fun = (name) => { // 函数体 return `Hello ${name} !`; }; // 等同于 let fun = function (name) { // 函数体 return `Hello ...

wenxin_liu的博客 232

ES6中箭头函数的作用

我们知道在ES6中,引入了箭头函数,其本质就是等同有ES5中的函数。类似于下面的写法:let test1=() => “abc”;let test2=() => { return “abc”};let sum=(a,b) => a+b; 比如上面的3个ES6的箭头函数的写完,如果用ES5就像下面的写完一样。其实其等同于下面的ES5的写法:...

dingcheng9127的博客 466

es6常用特性———箭头函数

我们知道在ES6中,引入了箭头函数,其本质就是等同于ES5中的函数,但是相比es5中的函数,箭头函数更加简洁,下面我们详细来了解一下箭头函数。 es5中函数表达式写成es6中箭头函数的规律如下:  1.省略function    用 => 来标识;  2.参数个数:    1)一个参数,省略小括号。    2)多个参数,不省略小括号。  3.函数体内有多少句指令:    1)一条指令   ...

weixin_45387568的博客 263
上一篇: ES6 明确函数的双重用途
下一篇: ES6 新增的对象字面量语法
苟盛
博客等级 码龄7年 13粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值