ES6 学习(二)-- 字符串/数组/对象/函数扩展
文章目录
- 1. 模板字符串
- 1.1 ${} 使用
- 1.2 字符串扩展
- (1) ! includes() / startsWith() / endsWith()
- (2) repeat()
- 2. 数值扩展
- 2.1 二进制 八进制写法
- 2.2 ! Number.isFinite() / Number.isNaN()
- 2.3 inInteger()
- 2.4 ! 极小常量值Number.EPSILON
- 2.5 Math.trunc()
- 2.6 Math.sign()
- 3. 数组扩展
- 3.1 扩展运算符
- 3.2 Array.from()
- 3.3 Array.of()
- 3.4 find() / findIndex()
- 3.5 fill()
- 3.6 ! flat() / flatMap()
- 4. 对象扩展
- 4.1 对象简写
- 4.2 对象属性 表达式
- 4.3 扩展运算符 ...
- 4.4 Object.assign()
- 4.5 Object.is()
- 5. 函数扩展
- 5.1 参数默认值
- 5.2 rest 参数
- 5.3 name 属性
- 5.4 ! 箭头函数
1. 模板字符串
之前字符串的痛点写法:
本来是 let oli = “
- kerwin
- ”; 如果字符串中间换行,那么字符串会断开:
只有加上 \ 才可以:
标签中间的内容如果想要是可变的,还需要将kerwin 换成变量,使用字符串拼接的方法进行书写,这种写法实在是很麻烦,现在可以采用一种新方法。(反引号:Tab键)
数组中数据可以使用遍历来获取,也可以通过使用数组的map 映射方法来获取。

数组上传到页面中会强行的转换成字符串的形式,数据会被 “,” 隔开;

可以写为newlist.join(“”) 利用空字符串连接1.1 ${} 使用
- ${ 变量 } 替换了之前字符串拼接方式(引引加加);
- ${ 表达式 }

- ${ 函数 }

1.2 字符串扩展
(1) ! includes() / startsWith() / endsWith()
-
includes()
– 判断字符串中是否存在指定字符(串)

// true

// false

// true
表示从字符串的索引 1 处开始查找 -
startsWith()

// true
startsWith() 同时也可以添加参数,与includes() 函数参数表示含义相同。 -
endsWith()

// true

// true
注意:endsWith() 在该处的含义是w 之前的部分是不是以r 结尾的。
(2) repeat()
let myname = kerwin

// kerwinkerwin
//
// kerwinkerwin
//2. 数值扩展
2.1 二进制 八进制写法

2.2 ! Number.isFinite() / Number.isNaN()
减少全局性方法,使得语言逐步模块化
- Number.isFinite()

- Number.isNaN()

它们与传统的全局方法isFinite() 和isNaN() 的区别在于,传统方法先调用Number(0将非数值的值转为数值,再进行判断,而这两个新方法只对数值有效,Number.isFinite() 对于非数值一律返回false ,Number.isNaN() 只有对于NaN才返回true ,非NaN一律返回false 。
2.3 inInteger()
inInteger() – 判断是否是整数

2.4 ! 极小常量值Number.EPSILON
它表示1与大于1的最小浮点数之间的差,2.220446049250313e-16。
function isEqual(a,b){ return Math.abs (a-b)<Number.EPSILON 3 console.log(isEqual(0.1+0.2,0.3))//true conso1e.1og(0.1+0.2===0.3)//fa1se2.5 Math.trunc()
将小数抹掉,返回一个整数
console.log(Math.trunc(1.2))//1 console.log(Math.trunc(1.8))//1 console.log(Math.trunc(-1.8))//-1 console.log(Math.trunc (-1.2))//-12.6 Math.sign()
Math.sign 方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。
Math.sign(-100)//-1 Math.sign(100)//+1 Math.sign(0)//+0Math.sign(-0)//-0 Math.sign("kerwin")/NaN3. 数组扩展
3.1 扩展运算符
之前复制数组写法:

… 展开符写法:

利用解构赋值和… 展开符复制数组(浅复制):

3.2 Array.from()
之前所说的arguments 是类数组结构,不能使用filter() 等方法,但是现在可以使用Array.from() 将类数组结构转换成真数组,就可以使用相关数组方法来。

3.3 Array.of()
可以将一组值转换成数组,

// [ ] (一个长度为3 的空数组)
// [ 3 ]3.4 find() / findIndex()
- find() / findIndex() – 正着寻找

// 14
// 3 - findLast() / findLastIndex()
这两个方法在ES13出现。
// 15
// 43.5 fill()

// [‘kerwin’,‘kerwin’,‘kerwin’]
// [11,‘kerwin’,33]3.6 ! flat() / flatMap()

// [1,2,3,Array(3)] [1,2,3,4,5,6]数组数据为对象时使用flat() :

// {…}, {…}使用flatMap() :
// [‘安庆’,‘安阳’,‘鞍山’,‘北京’,·‘保定’,‘包头’]4. 对象扩展
4.1 对象简写
-
函数简写:



简写为
let obj = {
name,
…
}4.2 对象属性 表达式

// {a: ‘kerwin’}
[ ]也可以进行字符串拼接:[name+‘bc’]等4.3 扩展运算符 …
对象扩展运算符 … ES9才出现

// {name: “tiechui”, age: “100”, }
对象展开合并遇到同名属性后者回复该前者的属性值!4.4 Object.assign()

// {name: “tiechui”, age: “100”}此处与对象扩展符不同的是,对象扩展符例子中obj1 的name 属性值在对象合并展开时不会发生改变;而此处则会发生改变。
如果不想要obj1 的属性值发生改变,可以使用以下方法:

4.5 Object.is()
判断两个数是否相等
- 判断NaN 和NaN 是否相等
之前使用== 和 === 判断NaN==/===NaN结果都为false ;

// true
// false
// false
// true- 判断+0 和-0 是否相等

// false
// true
5. 函数扩展
5.1 参数默认值

// aaa get true
// bbb get true5.2 rest 参数
rest 参数 形式是“… 变量名”
function test(data){console.log(data);}test(1, 2, 3, 4, 5)// 1
function test(...data){console.log(data);}test(1, 2, 3, 4, 5)// Array(5)
5.3 name 属性

// test5.4 ! 箭头函数
箭头函数写法简洁!
语法格式:

-
函数{ }中只有return 语句,写法更加简洁:


-
如果返回对象时需要注意: 使用( ) 将返回的对象括起来

// {name:‘kerwin’,age:100} -
只有一个参数可以省略( )

-
无法访问arguments,无法new

-
!没有this(也有说法说是指向了它的父作用域)
普通函数的痛点:
在函数内部定义定时器,定时器中的this 指向window

// window
// 发送undefined到后端,获取列表数据

使用箭头函数:

相关文章:
ES6 学习(二)-- 字符串/数组/对象/函数扩展
文章目录 1. 模板字符串1.1 ${} 使用1.2 字符串扩展(1) ! includes() / startsWith() / endsWith()(2) repeat() 2. 数值扩展2.1 二进制 八进制写法2.2 ! Number.isFinite() / Number.isNaN()2.3 inInteger()2.4 ! 极小常量值Number.EPSILON2.5 Math.trunc()2.6 Math.sign() 3.…...
《VMamba》论文笔记
原文链接: [2401.10166] VMamba: Visual State Space Model (arxiv.org) 原文笔记: What: VMamba: Visual State Space Model Why: 多年以来CNN和VIT作为视觉特征提取的主流框架 CNN具有模型简单,共享权重&…...
手机真机连接USB调试adb不识别不显示和TCPIP连接问题
手机真机连接USB调试adb devices不显示设备和TCPIP连接 本文手机型号为NOVA 7 ,其他型号手机在开发人员模式打开等方式可能略有不同,需根据自己的手机型号修改。 文章目录 1. 打开和关闭开发者模式2. 真机USB连接调试adb不显示设备问题的若干解决方法3…...
MySQL分表后,如何做分页查询?
参考: https://blog.csdn.net/qq_44732146/article/details/127616258 user.sql 完整的执行一遍,可以做到分表和分页 数据是实时的,往一张子表里插入之后,all表就能立刻查询到 在这里实现分页查询的是MyIsam引擎,这个引擎不支持…...
【Deep Learning 11】Graph Neural Network
🌞欢迎来到图神经网络的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年3月20日…...
http和https的工作原理是什么?
HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是两种用于在互联网上传输数据的主要协议,它们均用于在客户端(通常是Web浏览器)与服务器之间交换信息。尽管它们…...
STL中容器、算法、迭代器
STL标准模板库封装了常用的数据结构和算法,让程序员无需太关心真实的数据结构实现。 容器 容器:用来存放数据的。 STL容器就是将运用最广泛的的一些数据结构实现出来。 常用的数据结构有:数组、链表、树、栈、队列、集合、映射表。 这些…...
深入并广泛了解Redis常见的缓存使用问题
Redis 作为一门主流技术,缓存应用场景非常多,很多大中小厂的项目中都会使用redis作为缓存层使用。 但是Redis作为缓存,也会面临各种使用问题,比如数据一致性,缓存穿透,缓存击穿,缓存雪崩&#…...
nginx界面管理工具之nginxWebUI 搭建与使用
nginx界面管理工具之nginxWebUI 搭建与使用 一、nginxWebUI 1.nginx网页配置工具 官网地址: http://www.nginxwebui.cn 源码地址:https://git.chihiro.org.cn/chihiro/nginxWebUI 2.功能说明 本项目可以使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议…...
linux下 罗技鼠标睡眠唤醒问题的解决
sudo dmesg | grep Logitech | grep -o -P "usb.?\s" 得到3-2,用上面这条命令得到哪个usb口。 下面这条命令禁用罗技鼠标睡眠唤醒系统(3-2改成你自己电脑上得到的usb口) sudo sh -c "echo disabled > /sys/bus/usb/devic…...
架构师之路--Docker的技术学习路径
Docker 的技术学习路径 一、引言 Docker 是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖包打包成一个可移植的容器,然后在任何支持 Docker 的操作系统上运行。Docker 具有轻量级、快速部署、可移植性强等优点,因此在现代软件开…...
【动手学深度学习-pytorch】 9.4 双向循环神经网络
在序列学习中,我们以往假设的目标是: 在给定观测的情况下 (例如,在时间序列的上下文中或在语言模型的上下文中), 对下一个输出进行建模。 虽然这是一个典型情景,但不是唯一的。 还可能发生什么其…...
网际协议 - IP
文章目录 目录 文章目录 前言 1 . 网际协议IP 1.1 网络层和数据链路层的关系 2. IP基础知识 2.1 什么是IP地址? 2.2 路由控制 3. IP地址基础知识 3.1 IP地址定义 3.2 IP地址组成 3.3 IP地址分类 3.4 子网掩码 IP地址分类导致浪费? 子网与子网掩码 3.5 CIDR与…...
DC-9靶场
一.环境搭建 1.下载地址 靶机下载地址:https://download.vulnhub.com/dc/DC-9.zip 2.虚拟机配置 设置虚拟机为nat,遇到错误点重试和是 开启虚拟机如下图所示 二.开始渗透 1. 信息收集 查找靶机的ip地址 arp-scan -l 发现靶机的ip地址为192.168.11…...
自定义类型(二)结构体位段,联合体,枚举
这周一时兴起,想写两篇文章来拿个卷吧,今天也是又来写一篇博客了,也是该结束自定义类型的学习与巩固了。 常常会回顾努力的自己,所以要给自己的努力留下足迹。 为今天努力的自己打个卡,留个痕迹吧 2024.03.30 小闭…...
MySQL5.7源码分析--解析
select语句会走的case COM_QUERY判断 具体流程如下: 1.获取网络包数据,拿到查询语句,放入thd->query alloc_query(thd, packet, packet_length) 2.先查询缓存,缓存命中直接返回结果,未命中则解析 功能集中在mys…...
windows10搭建reactnative,运行android全过程
环境描述 win10,react-native-cli是0.73,nodeJS是20,jdk17。这都是完全根据官网文档配置的。react-native环境搭建windows。当然官网文档会更新,得完全按照配置来安装,避免遇到环境不兼容情况。 安装nodeJS并配置 这里文档有详…...
小迪学习笔记(内网安全)(常见概念和信息收集)
小迪学习笔记(内网安全)(一) 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…...
Python自动连接SSH
Python自动连接SSH 在 Python 中,可以使用 paramiko 模块来编写脚本自动执行 SSH 命令。paramiko 是一个用于 SSHv2 的 Python 实现,可以帮助你在脚本中进行远程执行命令。 首先,确保安装了 paramiko: pip install paramiko然后…...
机器学习实验------AGNES层次聚类方法
机器学习 — AGNES层次聚类方法 第1关:距离的计算 任务描述 本关任务:根据本关所学知识,完成calc_min_dist函数,calc_max_dist函数以及calc_avg_dist函数分别实现计算两个簇之间的最短距离、最远距离和平均距离。 import numpy as np def calc_min_dist(cluster1, clus…...
英语从句全攻略:名词性、定语、副词性从句一网打尽(含易错点分析)
英语从句全攻略:名词性、定语、副词性从句一网打尽(含易错点分析) 当你读到一篇地道的英文文章时,是否曾被那些"套中套"的句子结构难住?从句就像英语语法中的俄罗斯套娃,层层嵌套却暗藏规律。作为…...
乙巳马年春联生成终端部署教程:Docker镜像构建+GPU算力适配详解
乙巳马年春联生成终端部署教程:Docker镜像构建GPU算力适配详解 1. 引言:从创意到部署,开启你的AI春联创作之旅 想象一下,你只需要输入几个简单的愿望词,比如“如意”或“飞跃”,一扇威严的皇家红门就在屏…...
写作压力小了!2026最新AI论文写作工具测评与推荐
2026年真正好用的AI论文写作工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...
华硕梅林固件下,让HP1020打印机在Linux网络环境中重获新生
1. 为什么HP1020打印机在Linux网络环境中会"罢工"? 每次看到那台尘封已久的HP LaserJet 1020打印机,我都觉得特别可惜。这台老伙计在Windows系统下表现一直很稳定,但当我尝试把它接入刷了梅林固件的华硕路由器时,却遇到…...
Huey终极指南:为什么这个轻量级Python任务队列成为开发者的首选?
Huey终极指南:为什么这个轻量级Python任务队列成为开发者的首选? 【免费下载链接】huey a little task queue for python 项目地址: https://gitcode.com/gh_mirrors/hu/huey 在Python开发世界中,高效处理异步任务和定时任务是提升应用…...
【20年JVM老兵亲测】Java 25密封类+模式匹配+记录类三重协同时,API设计效率提升47%!
第一章:Java 25密封类扩展特性的演进脉络与设计哲学Java 密封类(Sealed Classes)自 Java 15 作为预览特性引入,历经 Java 16、17 的持续迭代,最终在 Java 17 成为正式特性。而 Java 25 进一步拓展其能力边界࿰…...
QT事件过滤器实战:如何用eventFilter拦截鼠标移动事件(附完整代码)
QT事件过滤器实战:如何精准拦截鼠标移动事件 在QT开发中,事件处理机制是GUI编程的核心。当我们需要对特定控件的事件流进行精细化控制时,事件过滤器(eventFilter)提供了一种优雅的解决方案。不同于直接重写事件处理函数,事件过滤器…...
OpenClaw技能扩展:GLM-4.7-Flash驱动Markdown文档自动整理
OpenClaw技能扩展:GLM-4.7-Flash驱动Markdown文档自动整理 1. 为什么需要文档自动化整理 作为一个长期使用Markdown写作的技术博主,我的文档目录早已变成了"数字坟场"。上周试图寻找半年前写的Docker网络配置笔记时,面对notes_20…...
电子工程开发工具全解析:从EDA到嵌入式系统
电子工程常用开发工具全景解析1. 电子工程软件工具概述电子工程作为信息技术的重要分支,其技术体系涵盖电路设计、信号处理、通信系统等多个专业领域。现代电子工程开发已形成完整的工具链体系,主要包括以下几类:EDA工具:电路设计…...
别再傻傻下载Gurobi软件了!Anaconda虚拟环境里一条conda命令搞定学术版安装(Win11实测)
颠覆认知的Gurobi安装指南:一条conda命令解锁学术版完整功能 每次看到同行们花半小时下载几个GB的Gurobi安装包,我就忍不住想分享这个被多数人忽略的高效方案。作为在运筹优化领域深耕多年的研究者,我发现90%的学术用户根本不需要走传统安装…...
