当前位置: 首页 > news >正文

ES6 混合 ES5学习记录

基础

数组

let arr = [数据1,数据2,...数组n]

使用数组

数组名[索引]

数组长度

arr.length

操作数组

在这里插入图片描述
arr.push() 尾部添加一个,返回新长度
arr.unshift() 头部添加一个,返回新长度

arr.pop() 删除最后一个,并返回该元素的值
shift 删除第一个单元

数组的尾部有点像栈顶,头部像栈底
所以,push的时候,在尾部添加,pop的时候再尾部删除
shift,unshift操作的就是栈底的东西,也就是头部

数组进阶用法

map() 遍历

    <script>const arr = ['red', 'blue', 'pink']const newArr = arr.map((ele,index) => {console.log(ele);console.log(index);return ele;})console.log(newArr);</script>

map有返回值,forEach没有返回值
map里边的函数,ele,index不是必须要写的
但是只有一个参数的话,看作是element

join()
有点像java中的合并数组

    <script>const arr = ['red', 'blue', 'pink']let a = arr.join();console.log(a);let a1 = arr.join("");console.log(a1);let a2 = arr.join("|");console.log(a2);</script>

在这里插入图片描述
空则就是逗号分隔

forEach
加强版for

被遍历的数组.forEach(function(当前数组元素,当前元素索引号){//函数体
}

element必须写,index可选

filter
array.filter(function(element, index, arr), thisValue)
除了element是必须,其他都是可选

  1. index索引
  2. arr当前数组
  3. thisValue 传this给回调函数,因为作用域不同

filter函数就是遍历加筛选,然后返回一个数组

reduce
累加
数组名.reduce(function(上一次值,当前值){ },起始值)
有初始值,就加上初始值

from
Array().from()
把伪数组转成真数组

块级作用域和函数作用域

{} 花括号里边就是块级作用域
一般为了块级作用域里边的数据不和外边的干扰,里边的变量用let

函数作用域
函数里边的作用域

let const var

前两个是ES6
const 是常量,必须初始化,不能再被赋值
但是引用变量里的值可以修改,毕竟引用变量实际上是地址

let 声明于块级作用域的变量,和var相比有更小的的作用域范围,只在块级作用域里边有效,不会提升到函数作用域

    <script>if(true) {let i = 0;}console.log(i);    </script>

在这里插入图片描述

var是ES5
var 现在一般不使用,毛病多
可以先使用再声明,且可以重复声明

    <script>var i;console.log(i);i = 10;var j = 1;var j = 2;console.log(j);</script>

var声明的变量有点像全局变量,所以在块级作用域里边的时候,会被提升到外部函数作用域

    <script>if(true) {var i = 0;}console.log(i);    </script>

在这里插入图片描述

模版字符串

``
有点类似于php中的字符串,可以写变量,写表达式,写多行字符串

        const name = 'jjking';const msg = `Hello,${name}`;const a = 10;const b = 5;const msg1 = `${a + b}`;const msg2 = `hhellddd`console.log(msg);console.log(msg1);console.log(msg2);

在这里插入图片描述

注意事项

  1. 要输出 `反引号 得用 \
  2. 换行会被保留 直接写 \n
  3. 可以嵌套模版字符串
  4. 兼容性可能不好,要兼容低版本浏览器,用插件

箭头函数

ES6引入

(argument1, argument2, ...) => {// 函数体
}

有点像java里边的lambda

返回的如果是一个对象,得加一个括号

    <script>const fun = () => ({name:'jjking'});console.log(fun());</script>

特点

  1. 没有this,继承父级作用域的this
  2. 没有arguments对象
  3. 没有Constructor,无法new fun()
  4. 没有prototype

箭头函数和普通函数的转换

  • 只有一个参数,可以省略括号
  • 只有一行的话,可以省略return,和{}

类似于java中的lambda

this指向

全局作用域的this
严格模式下,this是undefined
非严格,浏览器是window,node.js是global对象

一般函数this
指向的是自己

箭头函数的this
指向的父类的作用域

不适合箭头函数的场景

  • 构造函数
  • 需要this获取自身对象
  • 需要使用arguments

解构赋值

数组的解构赋值

按照索引位置进行赋值

// 基本用法
const [a, b, c] = [1, 2, 3];
console.log(a); // 输出: 1
console.log(b); // 输出: 2
console.log(c); // 输出: 3// 使用默认值
const [x, y, z = 0] = [4, 5];
console.log(x); // 输出: 4
console.log(y); // 输出: 5
console.log(z); // 输出: 0(默认值)

把右边的值,一个一个赋值给左边,左边的可以有默认值

函数的解构赋值

按照属性名字进行赋值

// 基本用法
const {name, age} = {name: "Alice", age: 20};
console.log(name); // 输出: "Alice"
console.log(age); // 输出: 20// 使用别名
const {name: personName, age: personAge} = {name: "Bob", age: 25};
console.log(personName); // 输出: "Bob"
console.log(personAge); // 输出: 25// 使用默认值
const {firstName = "Unknown", lastName = "Unknown"} = {firstName: "Charlie"};
console.log(firstName); // 输出: "Charlie"
console.log(lastName); // 输出: "Unknown"(默认值)

注意

  • 对于已经声明的变量进行解构赋值,必须在圆括号里边进行
let x, y;// 错误的写法:解析为代码块
{x, y} = {x: 1, y: 2};// 正确的写法:圆括号中进行解构赋值
({x, y} = {x: 1, y: 2});console.log(x,y); // 输出: 1 2

js会把{} 看做是代码块,所以会有歧义

其他的解构赋值

字符串

const [a, b, c] = 'abc';
console.log(a); // 输出: 'a'
console.log(b); // 输出: 'b'
console.log(c); // 输出: 'c'

数值和布尔值的解构赋值:会先将数值和布尔值转换为对应的包装对象类型(Number、Boolean),然后再进行解构赋值。

const {toString: numToString} = 123;
console.log(numToString === Number.prototype.toString); // 输出: trueconst {valueOf: boolValueOf} = true;
console.log(boolValueOf === Boolean.prototype.valueOf); // 输出: true

undefined 和 null 的解构赋值:在解构赋值时,如果源值是 undefined 或者 null,则会使用默认值

const [x = 0, y] = [undefined, 2];
console.log(x); // 输出: 0(默认值)
console.log(y); // 输出: 2const {z = 'default'} = {z: null};
console.log(z); // 输出: null(原始值)

相关文章:

ES6 混合 ES5学习记录

基础 数组 let arr [数据1&#xff0c;数据2&#xff0c;...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...

HTTP 状态码大全

常见状态码 200 OK # 客户端请求成功 400 Bad Request # 客户端请求有语法错误 不能被服务器所理解 401 Unauthorized # 请求未经授权 这个状态代码必须和WWW- Authenticate 报头域一起使用 403 Forbidden # 服务器收到请求但是拒绝提供服务 404 Not Found # 请求资源不存…...

Redis学习(13)| Redisson 看门狗机制深度解析

文章目录 摘要1. 引言2. 看门狗的工作原理2.1 自动续期2.2 防止意外释放2.3 合理配置 3. 应用场景4. 最佳实践4.1 设置合理的lockWatchdogTimeout4.2 避免死锁4.3 监控和日志 5. 实现方式6. 使用示例7. 结论 摘要 Redisson 是一个用于 Redis 的 Java 客户端&#xff0c;它提供…...

【开源大屏】玩转开源积木BI,从0到1设计一个大屏

积木 BI 重磅推出免费大屏设计器&#xff01;功能超强大&#xff0c;操作超流畅&#xff0c;体验超酷炫。快来体验一下吧。 让我们一起来看一下如何从0到1设计一个大屏。 一、积木BI大屏介绍 积木BI可视化数据大屏 是一站式数据可视化展示平台&#xff0c;旨在帮助用户快速通…...

基于PCRLB的CMIMO雷达资源调度方法(MATLAB实现)

集中式多输入多输出CMIMO雷达作为一种新体制雷达&#xff0c;能够实现对多个目标的同时多波束探测&#xff0c;在多目标跟踪领域得到了广泛运用。自从2006年学者Haykin提出认知雷达理论&#xff0c;雷达资源分配问题就成为一个有实际应用价值的热点研究内容。本文基于目标跟踪的…...

PAT--1035 插入与归并

题目描述 根据维基百科的定义&#xff1a; 插入排序是迭代算法&#xff0c;逐一获得输入数据&#xff0c;逐步产生有序的输出序列。每步迭代中&#xff0c;算法从输入序列中取出一元素&#xff0c;将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如…...

Ubuntu20.04.6编译OpenWRT23.05.5错误

在Ubuntu20.04.6编译OpenWRT23.05.5时&#xff0c;会出现如下提示&#xff1a; fatal error: asm/types.h: No such file or directory 如果我们执行如下命令&#xff1a; sudo ln -s /usr/include/asm-generic /usr/include/asm 此时再次编译&#xff0c;会有如下提示&…...

一文说清flink从编码到部署上线

引言:目前flink的文章比较多,但一般都关注某一特定方面,很少有一个文章,从一个简单的例子入手,说清楚从编码、构建、部署全流程是怎么样的。所以编写本文,自己做个记录备查同时跟大家分享一下。本文以简单的mysql cdc为例展开说明。 环境说明:MySQL:5.7;flink:1.14.0…...

【5G】5G Physical Layer物理层(一)

5G多址接入和物理层与长期演进&#xff08;LTE&#xff09;存在一些差异。在下行方向&#xff0c;5G与LTE相似&#xff0c;依旧采用正交频分多址&#xff08;OFDMA&#xff09;。而在上行方向&#xff0c;5G采用了OFDMA和单载波频分多址&#xff08;SC-FDMA&#xff09;&#x…...

GauHuman阅读笔记【3D Human Modelling】

笔记目录 1. 基本信息2. 理解(个人初步理解,随时更改)3. 精读SummaryResearch Objective(s)Background / Problem StatementMethod(s)EvaluationConclusionReferences1. 基本信息 题目:GauHuman: Articulated Gaussian Splatting from Monocular Human Videos时间:2023.12…...

qemu安装arm64架构银河麒麟

qemu虚拟化软件&#xff0c;可以在一个平台上模拟另一个硬件平台&#xff0c;可以支持多种处理器架构。 一、安装 安装教程&#xff1a;https://blog.csdn.net/qq_36035382/article/details/125308044 下载链接&#xff1a;https://qemu.weilnetz.de/w64/2024/ 我下载的是 …...

在Elasticsearch (ES) 中,integer 和 integer_range的区别

在Elasticsearch (ES) 中,integer 和 integer_range 是两种不同的字段类型,它们用于存储和查询不同类型的数据。 Integer: integer 类型是用于存储32位整数值的简单数据类型。这个类型的字段适合用来表示单一的整数数值,例如用户的年龄、商品的数量等。支持标准的数值操作,…...

Playwright中Page类的方法

导航和页面操作 goto(url: str, **kwargs: Any): 导航到一个URL。 reload(**kwargs: Any): 重新加载当前页面。 go_back(**kwargs: Any): 导航到会话历史记录中的前一个页面。 go_forward(**kwargs: Any): 导航到会话历史记录中的下一个页面。 set_default_navigation_tim…...

硬链接方式重建mysql大表

硬链接方式重建mysql大表 操作步骤 选择数据库 select datadir; 进入数据文件目录 cd /data/mysql/mydata/testdb 创建硬连接 ln test_trans_msg_xx.ibd test_service_trans_msg_xx.ibd.bak ll test_trans_msg_xx* 进库删除表 DROP TABLE test_trans_msg_xx; 重建表 CREATE T…...

GPIO在ZYNQ7000中的结构和相关寄存器解析

GPIO MASK DATA LSW和 MASK DATA MSW LSW和MSW分别是LSW (Least Significant Word)和MSW (Most Significant Word)。 因为DATA是u32,所以如果寄存器的基址是XGPIOPS_DATA_LSW_OFFSET&#xff0c;那么32位就能同时让高16位的MASK DATA MSW]31:16和 MASK DATA LSW的bit7同时为…...

Qt Xlsx安装教程

Qt Xlsx安装教程 安装perl 如果没有安装perl&#xff0c;请参考perl Window安装教程 下载QtXlsxWriter源码 下载地址 ming32-make编译32 lib库 C:\Qt\Qt5.12.12\5.12.12\mingw73_32>d: D:\>cd D:\Code\QtXlsxWriter-master\QtXlsxWriter-master D:\Code\QtXlsxWrit…...

Certimate自动化SSL证书部署至IIS服务器

前言&#xff1a;笔者上一篇内容已经部署好了Certimate开源系统&#xff0c;于是开始搭建部署至Linux和Windows服务器&#xff0c;Linux服务器十分的顺利&#xff0c;申请证书-部署证书很快的完成了&#xff0c;但是部署至Windows Server的IIS服务时&#xff0c;遇到一些阻碍&a…...

【中工开发者】鸿蒙商城实战项目(启动页和引导页)

创建一个空项目 先创建一个新的项目选择第一个&#xff0c;然后点击finish 接下来为项目写一个名字&#xff0c;然后点击finish。 把index页面的代码改成下面代码块的代码&#xff0c;就能产生下面的效果 Entry Component struct Index {build() {Column(){Blank()Column(){…...

跟李笑来学美式俚语(Most Common American Idioms): Part 63

Most Common American Idioms: Part 63 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记&#xff0c;自用。 Github仓库链接&#xff1a;https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来&#xff08;或者clone到本地…...

scala中如何解决乘机排名相关的问题

任务目标&#xff1a; 1.计算每个同学的总分和平均分 2.按总分排名&#xff0c;取前三名 3.按单科排名&#xff0c;取前三名 好的&#xff0c;我们可以用Scala来完成这个任务。下面是一个简单的示例代码&#xff0c;它将演示如何实现这些功能&#xff1a; // 假设我们有一个…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...