个人学习-前端相关(2):ECMAScript 6-箭头函数、rest、spread

ES6的箭头函数

ES6允许使用箭头函数,语法类似java中的lambda表达式

let fun1 = function(){}  //普通的函数声明
let fun2 = ()=>{}  //箭头函数声明
let fun3 = (x) =>{return x+1}  
let fun4 = x =>{return x+1} //参数列表中有且只有一个参数,()可以省略不写
let fun5 = x => console.log(x) //方法体中只有一行代码,{}可以不写
let fun6 = x=> x+1 //方法体中只有一行代码且是return返回的结果,那么return可以不写
​
//箭头函数中的this是外层上下文环境中的this
let person ={name:"zhangsan",showName : function(){console.log(this.name)   // zhangsan},viewName:()=>{console.log(this.name)    // 空白  this===window对象}
}
person.showName()
person.viewName()

箭头函数中this

一个简单测试Demo,主要验证箭头函数中的this是外层上下文环境中的this,页面点击后依次变红、绿,但不会黄。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#fangkuai {display: inline-block;width: 100vw;height: 100vh;background-color: rgb(67, 67, 194);}</style><script>onload = function () {var divElement = document.getElementById("fangkuai")divElement.onclick = function () {console.log(this === divElement)         //true   this对象是本函数调用对象,即divElementlet _this = thisthis.style.backgroundColor = "red"window.setTimeout(function () {console.log(this === window)         //true   this对象是本函数调用对象,即window_this.style.backgroundColor = "yellow"}, 2000)window.setTimeout(() => { console.log(this === divElement)     //true   this对象是外层上下文环境中(divElement的onclick函数内)的this,即divElementthis.style.backgroundColor = "green" }, 4000)}}</script>
</head><body><div id="fangkuai"></div>
</body></html>

rest和spread

rest参数,在形参上使用,和java中的可变参数几乎一样;spread参数,在实参上使用rest,可以理解为rest的逆运算。

以下案例介绍了基本使用,其中合并对象比较常用。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script>// rest 剩余的,解决剩余的参数接受问题let fun1 =(a,b,c,d,...arr)=>{console.log(a,b,c,d)console.log(arr)    }//...arr是形参,使用数组接收剩余参数fun1(1,2,3,4,5,6,7,8,9)   //打印结果:1,2,3,4  [5,6,7,8,9]// spread 使用let arr1 = [1,2,3]let fun2 = (a,b,c)=>{console.log(a,b,c)}//arr1是实参,对应形参afun2(arr1)   // [1,2,3],undefined,undefined//...arr1是实参,会将数组内容分解到形参,可以理解为rest的逆运算fun2(...arr1)  // 1,2,3//spread快速合并数组let a = [1,2,3]let b = [4,5,6]let c = [7,8,9]let d = [a,b,c]            //[1,2,3],[4,5,6],[7,8,9]let e = [...a,...b,...c]   // [1,2,3,4,5,6,7,8,9]console.log(d)console.log(e)//spread快速合并对象let person1 = {name:"zhangsan",id:"000001"}let person2 = {age:10}let person3 = {gender:"boy"}let person = {...person1,...person2,...person3}let person5 = {person1,person2,person3}console.log(person)  //{   "name": "zhangsan","id": "000001", "age": 10, "gender": "boy"}console.log(person5)  //{ "person1": {"name": "zhangsan","id": "000001"},"person2": {"age": 10},"person3": {"gender": "boy"}}</script>
</head>
<body></body>
</html>

运行结果如下:

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

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

相关文章

支持向量机(SVM)详细介绍

一、SVM基本概念 支持向量机&#xff08;Support Vector Machine&#xff0c;简称SVM&#xff09;是一种二分类模型&#xff0c;它的基本模型是定义在特征空间上的间隔最大的线性分类器。SVM的核心思想是寻找一个超平面&#xff0c;将不同类别的样本点分开&#xff0c;并且使得…

LeetCode题目74:搜索二维矩阵

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

kubebuilder(3)实现operator

在前面的文章我们已经了解了operator项目的基本结构。现在我们来写一点简单的代码&#xff0c;然后把我们的crd和operator部署到k8s集群中。 需求 这是一个真实的需求&#xff0c;只不过做了简化。 在开发公司自己的paas平台&#xff0c;有一个需求是&#xff0c;用户在发版…

FFMpeg - macOS build 报错 : xcrun -sdk iphoneos clang ...

文章目录 报错1&#xff1a;xcrun -sdk iphoneos clang is unable to create an executable file报错 2 &#xff1a; error: unknown type name AudioDeviceID; 在 macOS 上使用 https://github.com/kewlbear/FFmpeg-iOS-build-script 脚本&#xff0c;运行 ./build-ffmpeg.sh…

236基于matlab的三维比例导引法仿真

基于matlab的三维比例导引法仿真&#xff0c;可以攻击静止/机动目标。1.三维空间内的比例导引程序&#xff0c;采用龙哥库塔积分法&#xff1b;2.文件名为bili3dnew的.m文件是主函数&#xff0c;执行时需调用目标机动子函数、导引律子函数、数值积分法子函数&#xff1b;3.文件…

模拟LinkedList实现的双向链表

1. 前言 前文我们用java语言实现了无哨兵的单向链表.稍作修改即可实现有哨兵的单向链表.有哨兵的单向链表相较与无哨兵的而言&#xff0c;其对链表的头结点的增删操作更为方便.而在此我们实现了带有头节点和尾节点的双向链表(该头节点和尾节点都不存储有效的数据). 2. 带有头…

统计建模——模型——python为例

统计建模涵盖了众多数学模型和分析方法&#xff0c;这些模型和方法被广泛应用于数据分析、预测、推断、分类、聚类等任务中。下面列举了一些常见的统计建模方法及其具体应用方式&#xff1a; 目录 1.线性回归模型&#xff1a; ----python实现线性回归模型 -------使用NumPy…

计算机网络—网络层

一、网络层的功能 网络层的任务 主要任务是通过路由器实现网络互联&#xff0c;进而实现数据报在各网络之间的传输 “数据报”就是从数据链路层接收的分组好的数据&#xff0c;又叫“IP数据报”或“IP分组” 网络层提供的两种服务 1面向连接的虚电路服务 当两台计算机进行…

阿里云安装Mysql

阿里云安装Mysql 1、下载mysql包&#xff0c;并解压包2、继续解压文件3、拷贝到安装目录4、创建mysql组和用户5、创建mysql数据目录&#xff08;根目录&#xff09;6、赋予权限7、加入路径8、配置文件顺序&#xff1a;9、初始化mysql10、启动mysql&#xff08;结尾加"&…

【C++】---STL容器适配器之queue

【C】---STL容器适配器之queue 一、队列1、队列的性质 二、队列类1、队列的构造2、empty()3、push()4、pop()5、size()6、front()7、back() 三、队列的模拟实现1、头文件&#xff08;底层&#xff1a;deque&#xff09;2、测试文件3、底层&#xff1a;list 一、队列 1、队列的…

VulnHub靶机 DC-系列合计 通关攻略手册

VulnHub靶机 DC靶机系列 通关手册 DC-1&#xff1a;Vulnhub靶机 DC-1 渗透详细过程 DC-2&#xff1a;Vulnhub靶机 DC-2 渗透详细过程 DC-3&#xff1a;Vulnhub 靶机 DC-3 实战系列 渗透详细过程 DC-4&#xff1a;VulnHub系列 DC-4靶机 渗透详细过程 DC-5&#xff1a;VulnH…

Java基础_集合类_List

List Collection、List接口1、继承结构2、方法 Collection实现类1、继承结构2、相关类&#xff08;1&#xff09;AbstractCollection&#xff08;2&#xff09;AbstractListAbstractSequentialList&#xff08;子类&#xff09; 其它接口RandomAccess【java.util】Cloneable【j…

Kafka学习笔记01【2024最新版】

一、Kafka-课程介绍 官网地址&#xff1a;Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/ kafka 3.6.1版本&#xff0c;作为经典分布式订阅、发布的消息传输中间件&#xff0c;kafka在实时数据处理、消息队列、流处理等领域具有广泛…

【NTN 卫星通信】NTN应该使用FDD还是TDD双工模式

1 概述 现在主流的商用地面通信系统一般都支持FDD和TDD两种模式&#xff0c;实用于不同的频段。那么卫星通信也需要有这两种模式吗&#xff1f; 2 NTN 双工模式分析 在考虑TDD模式时&#xff0c;需要设置保护时间&#xff0c;以防止终端同时发射和接收。该保护时间直接取决于终…

容器安全-镜像扫描

前言 容器镜像安全是云原生应用交付安全的重要一环&#xff0c;对上传的容器镜像进行及时安全扫描&#xff0c;并基于扫描结果选择阻断应用部署&#xff0c;可有效降低生产环境漏洞风险。容器安全面临的风险有&#xff1a;镜像风险、镜像仓库风险、编排工具风险&#xff0c;小…

【ZZULIOJ】1085: 求奇数的乘积(多实例测试)(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 给你n个整数&#xff0c;求他们中所有奇数的乘积 输入 输入数据包含多个测试实例&#xff0c;每个测试实例占一行&#xff0c;每行的第一个数为n&#xff0c;表示本组数据一共有n个&#xff0c;接…

计算机网络第十七天(第一天的答案)

网络互连复习笔记 1、ospf三张表&#xff1a;路由表、邻居表、链路状态数据库 2、组播地址的含义&#xff1a; 224.0.0.5所有的ospf路由器 224.0.0.6所有的ospfDR路由器 3、ospf报文类型&#xff1a; Hello(组播) 用于发现直连链路上的ospf邻居和维护ospf邻居…

Python_AI库 Matplotlib的应用简例:绘制与保存折线图

本文默认读者已具备以下技能&#xff1a; 熟悉Python基础语法&#xff0c;以自行阅读python代码块熟悉Vscode或其它编辑工具的应用 在数据可视化领域&#xff0c;Matplotlib无疑是一个强大的工具。它允许我们创建各种静态、动态、交互式的可视化图形&#xff0c;帮助我们更好…

python中如何用matplotlib写雷达图

#代码 import numpy as np # import matplotlib as plt # from matplotlib import pyplot as plt import matplotlib.pyplot as pltplt.rcParams[font.sans-serif].insert(0, SimHei) plt.rcParams[axes.unicode_minus] Falselabels np.array([速度, 力量, 经验, 防守, 发球…

JET毛选学习笔记:如何利用《矛盾论》从做实验到做科研vol. 1

一、前情回顾 上一轮讲了基于《实践论》的方法论学习一门实验&#xff0c;从获取间接经验到实践&#xff0c;总结&#xff0c;再实践&#xff0c;再总结&#xff0c;反反复复无穷尽也&#xff0c;不知道大家悟出了多少呢&#xff1f;其实&#xff0c;有一个概念我刻意避开了没…