ES6学习笔记(三)箭头函数

ES6 箭头函数 ES6 中添加了函数新的定义语法——箭头函数,当有大于一个形参的时候,必须使用()代表部分参数,函数体大于一行时,必须使用{}将函数体括起来,并使用 return 返回。 箭头函数不会创建自己的 this 箭头函数会在自己的作用域链上的上一层寻找 this。所以箭头函数会在定义时找到自己外层的 this,并继承这个 this 的值。在后面的任何操作中,this 的值都不会改变。 箭头函数的实现: ... 阅读详情

接触ES6之前一看到箭头函数,脑子里真的是一堆问号,不知道到底写的什么东西,但是看了一些资料了解之后,觉得也是挺容易使用的,而且在一些场合特别方便,尤其是在使用数组函数的时候,所以就把箭头函数的内容做了份笔记写下来。

箭头函数的使用

//ES5
function fn1(){};
function fn2(a){};
function fn3(a,b,c){};

//ES6
let fn1=()=>{};
let fn2=a=>{};
let fn3=(a,b,c)=>{};

上面的部分代码就是ES5的函数声明的写法,而在ES6中,我们把参数放在“()”内,后面跟着“=>”,函数体就放在“{}”的代码块中。当函数的参数只有一个时,可以省去括号,而如果函数体中只有一行代码的话,也可以把"{}"省略掉。

let fn=a=>console.log(a);

箭头函数支持普通函数参数的所有功能,包括默认值,解构,rest参数等。


箭头函数简化方法写法

map函数

在我看来map函数就是对数组中的每个值进行同样的操作然后返回一个同样长度,位置上一一对应的数组,就好像数学上的映射一样,数组中的每个值通过一定的操作后得到一个对应的值。在ES5中,我们可以直接这样写:

let arr=[12,32,43,24];
let doubleArr=arr.map(function(item){//参数item为数组中的值
    item=item*2;
});
//[24,64,86,48]

let judgeArr=arr.map(function(item){
    if(item>30)
        return true;
    else
        return false;
});
//[false,true,true,false]

而在ES6中,我们通过箭头函数和三目运算符,可以把代码变为一行,而且看起来更加简洁

let arr=[12,32,43,24];
let doubleArr=arr.map(item=>item=item*2);
//[24,64,86,48]

let judgeArr=arr.map(item=>item>30?true:false);
//[false,true,true,false]

reduce函数

reduce函数不同于map函数,虽然它也是数组函数,但是它只返回一个值,在不自己添加return前,它返回最后一次的中间值。它有三个参数,第一个参数是一个中间值,是函数上一步返回的结果,而因为reduce函数是从下标为1的位置开始遍历的,所以它的第一个中间值为数组的第一个数的值,后面的中间值等于上一趟遍历的返回值;第二个参数即为遍历的数组内的值;第三个参数为数组的值对应的下标。

var arr=[12,32,53];
arr.reduce(function(temp,item,index){
    console.log("temp:"+temp+"  item:"+item+"  index:"+index);
})
//temp:12  item:32  index:1        第一次temp值为arr[0]的值
//temp:undefined  item:53  index:2 第二次因为第一次遍历没返回值,所以为undefined

对应可以用reduce函数方便地求出数组内的值的总数和平均数

//求总数
var arr=[12,32,53];
var sum=arr.reduce(function(temp,item,index){
    return temp+item;//每次将返回值和当前值相加,最终就会的出总数
})
//97

var avg=arr.reduce(function(temp,item,index){
    if(index==arr.length-1)
        return (temp+item)/arr.length;//当下标为长度减一时除以数组长度得到平均值
    else
        return temp+item;
})
//32.333333333333336

ES6箭头函数的简写

let arr=[12,32,53];
let sum=arr.reduce((temp,item,index)=>temp+item);
let avg=arr.reduce((temp,item,index)=>index==arr.length-1?(temp+item)/arr.length:temp+item);

filter函数

关于filter函数,我觉得它的英文翻译过来就很贴切地形容了它的功能了,过滤器。filter函数与map函数一样,也是返回一个数组,而且也会对数组中的每一个数进行相同的操作,不同的是,filter函数并不会一一对应返回相同长度的数组。filter函数返回的数组长度小于等于原数组的长度,filter函数通过对原数组进行一定的操作,返回true或false,返回true的数就添加到要返回的新数组中,返回false的数则被“过滤”掉。

var arr=[23,54,26,62,45,93,15]
var newArr=arr.filter(function(item){
    if(item%3==0)//新数组返回原数组中可以整除以3的数
        return true;
    else
        return false;
});
//[54, 45, 93, 15]

ES6箭头函数的简写

let arr=[23,54,26,62,45,93,15]
let newArr=arr.filter(item=>item%3==0);
//[54, 45, 93, 15]

//因为item%3==0刚好是个布尔值,所以直接作为返回值,不用使用三目运算符

箭头函数实用的注意点

箭头函数虽然使用方便,但也有些地方需要注意

1.如果箭头函数最终要直接返回一个对象,要注意使用两个"{}"嵌套,外层的"{}"是包含代码块的,内层才是对象,如果只写一个{},会得到报错的结果

let fn=()=>{a:1,b:2}
//Uncaught SyntaxError: Unexpected token

有一种特殊情况不会报错,即对象中只有一个属性值,但那样最后返回的不是一个返回值,如下面的代码

var fn=()=>{a:1}
//undefined

这段代码虽然没有报错,但它最后会返回undefined,这是因为在箭头后面的并没有被认为是一个对象,而是一个代码块,整个函数被认为是函数体为a:1的函数,即在函数内部执行了a:1的语句,并没有返回什么值

2.箭头函数没有自己的this,arguments,super

如果在箭头函数中使用this,arguments,super的话,它会调用外部代码块的this,arguments,super,正是由于这样,箭头函数不能使用构造函数。

如果要调用箭头函数的参数的话,可以使用rest参数获取传入的参数。


参考自阮一峰的《ECMAScript6入门》


ES6学习笔记目录

 

ES6学习笔记(一)let和const

ES6学习笔记(二)参数的默认值和rest参数

ES6学习笔记(三)箭头函数简化数组函数的使用

ES6学习笔记(四)解构赋值

ES6学习笔记(五)Set结构和Map结构

ES6学习笔记(六)Iterator接口

ES6学习笔记(七)数组的扩展

ES6学习笔记(八)字符串的扩展

ES6学习笔记(九)数值的扩展

ES6学习笔记(十)对象的扩展

ES6学习笔记(十一)Symbol

ES6学习笔记(十二)Proxy代理

ES6学习笔记(十三)Reflect对象

ES6学习笔记(十四)Promise对象

ES6学习笔记(十五)Generator函数

ES6学习笔记(十六)asnyc函数

ES6学习笔记(十七)类class

ES6学习笔记(十八)尾调用优化

ES6学习笔记(十九)正则的扩展

ES6学习笔记(二十)ES Module的语法

 

拉曼光谱仪的原理与应用——TFN 7G F660手持式拉曼光谱识别仪 阅读详情

相关推荐

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

【ES6基础】箭头函数(Arrow functions)

开篇ES6中,除了let和const新特性,箭头函数是使用频率最高的新特性了。如果你曾经了解如日中天的JavaScript衍生语言CoffeeScript, 就会清楚此特...

前端达人 992

信息抽取实战:三元组抽取(限定领域 vs 开放领域)(附代码)

信息抽取实战:三元组抽取 目录信息抽取实战:三元组抽取一、限定领域的三元组抽取比赛介绍数据分析序列标注模型关系分类模型三元组提取总结开放领域的三元组抽取标注平台文本分类新数据进行三元组抽取总结参考文献 一、限定领域的三元组抽取   本项目将会介绍在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。 比赛介绍   该比赛的网址为:http://lic2019.ccf.org.

南有芙蕖 2万+

ES6中的箭头函数和扩展

箭头函数 ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 箭头函数与传统的JavaScript函数主要区别在于以下几点: 1.函数内置的this的值取决于箭头函数在哪里定义而非剪头函数执行的上下文关系; 2.new 不可用 箭头函数不能使用new关键字来实例化对象 不然会报错 3.this不可变 函数内置this 不可变 在函数体内整个执行环境中为常量 ...

请回答,1988 493

SAP VF01开票报错:出口贸易数据不完整

找了半天资料,最后发现是没有维护凭证抬头的数据;由于我不是SD模块顾问,整体流程使用的是原本环境里面的数据,用新建工厂引用,所以也不知道为啥会出发这个贸易业务。正常传到FICO模块,生成会计凭证、获利分析、利润中心及CO凭证。需要维护这三个字段后才能正常转到FI生成会计凭证。VF01开票报错:出口贸易数据不完整。

MaiKouBei的博客 1540

YOLO11实战 第056期-基于yolo11的无人机航拍铁路障碍物检测实战-数据集&源码&系统

召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 158

js中filter函数使用箭头函数的时候注意事项

在JavaScript的箭头函数中,如果函数体只包含一个表达式,并且该表达式返回一个值,那么你可以省略大括号{}和return关键字。箭头函数会自动返回该表达式的结果。此时返回的是一个空数组。

weixin_51480428的博客 466

从波士顿动力SpotMini拆解看四足机器人机械设计:关节布局与电机选型的5个关键决策点

本文深入解析波士顿动力SpotMini四足机器人的机械设计,聚焦关节布局与电机选型的5个关键决策点。通过拆解髋关节偏移距、膝关节传动链、电机热管理等核心设计,揭示商业级四足机器人的工程智慧,为工业巡检、物流机器人等应用提供实用参考。

postgres8guard的博客 893

filter的两种写法:如果用箭头函数,就需要加return

);

weixin_43489042的博客 575

大疆前端开发面试题及参考答案(4万字长文)

在前端项目中,难点和性能优化的挑战无处不在。比如在处理复杂交互界面时,实现流畅的动画效果和实时反馈就是一大难点。当界面中有大量元素需要同时进行交互和动态更新,像电商平台的商品筛选和排序功能,不仅要保证操作的即时响应,还要确保界面在各种设备和网络环境下的稳定性,这就需要对事件处理、DOM 操作和数据更新机制有深入理解。在性能优化方面,首屏加载速度是常见的难点。当页面包含大量图片、脚本和样式文件时,如何合理地进行资源压缩、合并与缓存,以减少加载时间,是需要精心考虑的。

大模型大数据攻城狮的专栏 1155

【知识分享】车载以太网PCB布局设计指南

本文将深入探讨在设计车载以太网设备的印刷电路板(PCB)时需要着重考虑的若干关键主题。这些主题广泛涵盖了数据布线设计,以确保其符合信号完整性(SI)和电磁兼容性(EMC)标准;外部元器件的合理摆放;以及采取有效的抗电磁干扰(EMI)布局策略等方面。通过全面且细致地处理这些关键环节,能够显著提升车载以太网设备的性能与可靠性。

一只豌豆象的博客 1352

[ES6] 理解JavaScript中 map、forEach、filter 和 find 与箭头函数的使用

如果你是一个刚开始学习 JavaScript 的人,你可能会觉得编写箭头函数很容易。但如果在箭头函数出现之前你已经习惯了 JavaScript 的写法,那么在你适应之前,每次遇到箭头函数时,你可能需要上网搜索箭头函数的语法或整理笔记。我相信很多人都有这样的经历。然而,一旦你适应了箭头函数的写法,你就可以写出更简洁的代码,以至于在以后你可能会忘记传统的写法。在本文中,我们将讲解如何使用箭头函数和 map、forEach、find、filter 函数,帮助你掌握箭头函数的编写方法和各个函数的使用方法。

zhtbs的博客 2545

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为

KJ.JK 1072

ES6 学习笔记三:箭头函数篇

ES6 允许使用“箭头”(=>)定义函数。 var f = v => v; // 等同于 var f = function (v) { return v; }; 如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。 var f = () => 5; // 等同于 var f = function () { return 5 }; var sum = (num1, num2) => num1 + num2; // 等同于 var sum = func

沐天的博客 259

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

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

Javascript ES6 学习笔记 三: 箭头函数

箭头函数是ES6新增的一种函数的写法,更加的简洁,箭头函数的语法形式就不具体说了,简单来说就是就是把function函数的function关键字去掉,在()和{}之间添加一个=>箭头即可,例如: let testFun = function() { console.log("这不是箭头函数"); } let testFun = () => { console.l...

qiu7qiu7的博客 280

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ES6基础:箭头函数

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

余光的博客 2万+

ES6箭头函数

知其然知其所以然

李蘑菇的博客 7312

ES6箭头函数详解

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

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

ES6学习笔记(8)--箭头函数的使用

引言:谈不上说写了ES5几年,但是在ES6中使用的箭头函数看起来就是比ES5爽,然后学习ES6的语法,后期我的编程当中会一直使用ES6,这样才可以进步 开始学习 1.以下是ES5的函数写法 function name(firstName,lastName){ return firstName+' '+ lastName; } console.log(name('yang','...

YmwWow的博客 833

ES6之什么是箭头函数?

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

weixin_40851188的博客 3417

ES6箭头函数的缺点

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

u010007013的博客 3405

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

Es6新特性之箭头函数

箭头函数 基本语法 (x,y)=>{ ...函数体 } //es6 let res = (x,y)=>{ console.log(x,y) } res(2,3); //es5 let res2 = function(x,y){ console.log(x,y) } res2(2,3) 上面两种输出的结果是相等的,箭头函数相对于es6之前的function更加简洁,...

Sumshine12.5 2008

Es6箭头函数

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

Y3265660267的博客 1047

ES6中箭头函数

箭头函数包含以下几个内容: 1 箭头函数的基本用法 2 使用箭头函数注意事项 3 箭头函数的 this 4 不适用箭头函数的场合 5 嵌套的箭头函数 下面是每个内容详情: 1 箭头函数的基本用法 //ES5 普通函数 var function foo(e){ return e; } //ES6 箭头函数 var foo = e => e; 如果箭头函数的参数是一个参数那么可以直接写成上...

zsl15039718107的博客 892

ES5和ES6箭头函数this简析

ES5和ES6箭头函数this简析 箭头函数的作用: 箭头函数让函数的书写变得很简洁,可读性更好 解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题。 ES5 全局环境下,this 始终指向全局对象(window), 无论是否严格模式; console.log(this.document=== docum...

low666的博客 1493
上一篇: ES6学习笔记(二)参数的默认值和rest参数
下一篇: ES6学习笔记(四)解构赋值
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值