个人学习-前端相关(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对象是本函数调用对象,即divElement
                let _this = this
                this.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,即divElement
                    this.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是实参,对应形参a
        fun2(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>

运行结果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纯血鸿蒙APP实战开发——预渲染实现Web页面瞬开效果

介绍 为了便于大家在使用本案例集时能够更详细的了解各个案例&#xff0c;本案例基于Web预渲染实现了案例介绍功能&#xff0c;即应用右下角的问号icon。 效果图预览 使用说明 因为直接加载的线上README&#xff0c;因此本功能需联网使用点击icon&#xff0c;即会弹出对应案…

Docker容器部署overleaf

overleaf在线版限制很多&#xff0c;好在开源&#xff0c;准备在本地Docker部署&#xff0c;网上翻了翻&#xff0c;似乎本地部署并非易事&#xff0c;我也尝试了一下&#xff0c;发现直接使用docker-compose拉官方最新镜像部署的确问题很多&#xff0c;不过最终还是完美解决。…

如何借模板助力小程序开发

不论是奶茶店还是其他行业&#xff0c;想要开发小程序&#xff0c;乔拓云都为你提供了便捷的方案。无需复杂的编程技术&#xff0c;通过套用模板的方式&#xff0c;即可快速打造专属小程序。 在线访问乔拓云官方网站&#xff0c;免费注册账号后&#xff0c;即可进入商城小程序的…

C语言学习/复习36

一、程序的环境与预处理 二、翻译环境与执行环境 三、运行环境 四、预编译(预处理)详解

Docker从无到有

主要为windows下docker的安装与使用~ 初始Docker Docker理解 对于docker的加简介&#xff0c;我们可以官网获取它的概念&#xff0c;接下来就从什么是docker、为什么要使用docker以及它的作用来进行一个快速入门 前提&#xff1a;项目在发布时&#xff0c;不仅需要其jar包同…

Open-Sora 升级技术报告解读

最新功能概览 开源地址&#xff1a;https://github.com/hpcaitech/Open-Sora 技术报告&#xff1a;Open-Sora/docs/report_02.md at main hpcaitech/Open-Sora GitHub技术报告&#xff1a; 支持长视频生成&#xff1b;视频生成分辨率最高可达 720p&#xff1b;单模型支持任…

SOL跟单机器人是什么?

SOL跟单机器人是什么&#xff1f; 顾名思义&#xff0c;就是对方买什么我们买什么。。 solana跟单机器人&#xff0c;炒土狗新思路 跟聪明地址买入及卖出 1.跟随目标地址买入代币&#xff0c;比目标地址慢1-2秒内上链 2.上链稳定&#xff0c;采用jito路径&#xff0c;防止被夹 …

【视频打架行为数据集】打斗场景视频数据集简要介绍

一、UBI-Fight&#xff08;异常事件检测数据集&#xff09; 介绍 UBI-Fights 数据集是一个独特的全新大型数据集&#xff0c;涉及特定的异常检测并仍然在打斗场景中提供广泛的多样性&#xff0c;该数据集包含 80 小时的视频&#xff0c;在帧级别进行了完全注释。由 1000 个视…

三款数据可视化工具深度解析:Tableau、ECharts与山海鲸可视化

在数字化时代&#xff0c;数据可视化工具成为了企业和个人进行数据分析和决策的重要助手。市面上众多数据可视化工具各具特色&#xff0c;本文将为您介绍三款热门的数据可视化工具&#xff0c;帮助您更好地理解和利用数据。 首先&#xff0c;让我们来认识Tableau。Tableau是一款…

opencv4.8 系列一环境搭搭建

open 运行环境&#xff1a; vs2017 下载地址&#xff1a;https://www.123pan.com/s/cVyRVv-ydPWh.html 一&#xff1a;新建项目 二&#xff1a;核心代码&#xff1a; 在这里插入代码片 #include<opencv2/opencv.hpp>int main(int argc,char** argv) {cv::Mat src cv…

windows服务启动提示‘服务没有响应控制功能’(mysql启动报错)

在安装mysql的时候&#xff0c;在windows服务项启动 或 使用命令net start mysql 时启动是报错&#xff0c;提示 服务没有响应控制功能 发生原因&#xff1a; Windows10 x64 或 更高的操作系统&#xff0c;有些系统缺少一些组件 解决办法&#xff1a; 1、下载最新的 Microsoft …

Mybatis入门-----(1)

Mybaits入门 一、Mybaits框架特点 支持定制化SQL、存储过程、基本路线以及高级映射避免了几乎所有JDBC代码中手动设置参数以及获取结果集支持注解式开发、XML开发 二、开发我第一个MYbatis程序 ①打包方式jar ②引入依赖 mybatis依赖mysql驱动 前面两步的pom.xml文件<?…

如何在自己的网站页面中嵌入一个【悬浮音乐播放器】

如何嵌入【悬浮音乐播放器】 前言正文1.打开网易云网页版2.设置自己想要的高度和宽度看注意事项 3.选择是否为自动播放4.在header.php文件中</head>标签前插入下面代码5.在heard.php 中<body>标签后边增加一个 div层6.复制播放器代码到\<div>标签的里边7.保存…

AD修改元器件的引脚长度

这个地方的两个引脚长度不一样 双击其中的一个引脚。 修改这个位置就好了。

Docker学习(二十五)构建 Arthas 基础镜像

目录 一、简介二、构建基础镜像2.1 下载 Arthas2.2 编写 Dockerfile2.3 构建镜像2.4 创建容器2.5 测试 一、简介 Arthas 是一款由 阿里巴巴 开发的 线上监控诊断工具。通过全局视角实时查看应用负载、内存、GC、线程等信息&#xff0c;能在不修改代码的情况下&#xff0c;对业…

SUPIR图像放大模型介绍与实际测试

✨背景 正如&#xff0c;最顶级的料理只需要最简单的烹饪方法一样&#xff0c;图像放大&#xff0c;是设计领域里边最常面对的一个问题&#xff0c;在AI绘画里边也是很常见的一个课题。虽然现在放大算法、放大模型有很多&#xff0c;但是真的能实现的比较好的&#xff0c;并不…

语义分割——json文件转shp

前言 在用labelme标注遥感图像后会生成json文件&#xff0c;如果我们想要shp文件&#xff0c;下面给出了具体实现流程。 一、依赖配置 import json import geopandas as gpd from shapely.geometry import Polygon from osgeo import gdal import argparse import glob import…

【论文解析】笔触渲染生成 前沿工作梳理

最近的一些工作梳理 2023年 Stroke-based Neural Painting and Stylization with Dynamically Predicted Painting Region 2022年Im2Oil: Stroke-Based Oil Painting Rendering with Linearly Controllable Fineness Via Adaptive Sampling 文章目录 1 Stroke-based Neural P…

【海博】雅思该怎么考?

文章目录 考试类型 考试内容 考试形式 备考资源 考试报名 考试成绩 考试类型 学术类&#xff08;A类&#xff09;适用于&#xff1a;出国留学申请本科&#xff0c;研究生及以上学位&#xff0c;或获得专业资质。学术类考试评估考生的英语水平是否满足进行大学或研究生学习…

【C语言】文件操作(1)

为什么使⽤⽂件&#xff1f; 如果没有⽂件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运⾏程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进⾏持久化的…