前端-ES6

news/2024/7/10 23:40:18 标签: 前端, es6, ecmascript

let 和 const

为了解决var的作用域的问题,而且var 有变量提升,会出现全局污染的问题

  1. let 块状作用域,并且不能重复声明
  2. const 一般用于声明常量,一旦被声明无法修改,但是const 可以声明一个对象,对象内部的属性是可以修改的
    建议: 在默认的情况下用const, 而只有你知道变量值需要被修改的情况下才使用let

模板字符串

解决字符串拼接问题,类似Java中的占位符号

函数之默认值、剩余参数

// 默认值
function add(a, b = 20) {
  return a + b
}

// 默认的表达式也可以可以是一个函数
function add(a, b = getVal(5)) {
  return a + b
}

// 剩余参数:由三个点... 和一个紧跟着的具名参数指定 ...keys
function foundData(obj, ...keys){
	
}

函数扩展运算符、箭头函数

// 扩展运算符: 将一个数组分割,并将各个项作为分离的参数传给函数
// 获取数组中的最大值
const arr = [10,20,90,30]
// ES5 
Math.max.apply(null, arr)

// ES6 
Math.max(...arr)


// 箭头函数
const add = (a, b) =>{
	return a + b
}

const add val => {
	return a + 5
}

const add val => (a + 5)

解构赋值

// 解构赋值时对赋值运算符的一种扩展
let node = {
	name: '张三',
	age: 45
}
const name = node.name
const age = node.age

// 等价写法
const {name, age } = node

// 对数组解构
let arr = [1,2,3]
let[a,b] = arr


// 可嵌套解构
let [a,[b],c] = [1,[2],3]

扩展对象的功能

// 对象的方法
// is() ==== 比较俩个值是否严格相等
Object.is(NaN, NaN)

// assign() 对象合并
let newObj = Object.assign({},{a:1},{b:2})
// 重复的属性,只会保留一个,会被覆盖掉
Object.assign({},{a:1},{b:2},{b:2})
{a: 1, b: 2}
// 属性名称一样,但是值不一样,会回去最后的值
Object.assign({},{a:1},{b:2},{b:3})
{a: 1, b: 3}

Symbol类型

// 原始的数据类型Symbol,它表示独一无二的值
// 最大的用途:用来定义对象的私有变量

set集合数据类型

// 可以用于去除重复元素
let set2 = new Set([1,2,3,3,3,3,4])

// 也可以将set集合中的元素在转换为数组
let arr = [...]

// set中对象的引用无法被释放,虽然可以使用WeakSet, 但是WeakSet比Set少了很多方法

Map数据类型

数组的扩展方法

数组的方法 from() of()
// from() 将伪数组转换成真正的数组
function add(){
	let arr = Array.from(arguments)
	// 这时候的数组就具备数组的所有方法
}

let lis = document.querySelectorAll('li')
console.log(Array.from(list))
// 或者可以通过扩展运算符转换为真正的数组
console.log([...lis])

// from() 还可以接受第二个参数,用来对每个元素的处理
let liContents = Array.from(lis, ele => ele.textContent)

// of() 将任意的数据类型,转换成数组
Array.of(3,11,20,[1,2,3])

// find() findIndex()
// find() 找出第一个符合条件的数组成员
let num = [1,2,-10,-20,9].find(n => n<0)

// findIndex() 找出第一个符合条件的数组成员的索引
let num = [1,2,-10,-20,9].findIndex(n => n<0)

// entries() keys() values()
for(let index of ['a', 'b'].keys()){
	console.log(index)
}

for(let ele of ['a', 'b'].values()){
	console.log(ele)
}

// incluedes() 返回一个boolean 值,表示某个数组中是否包含某个元素

迭代器Interrator 的用法

// Iterator 一种遍历机制
const items = ['one', 'two', 'three']
const ite = items[Symbol.iterator]();
// {value: "one", done: false} done 如果为false表示还有元素,如果为true 表示遍历完成结束了
ite.next() 

Generator的应用

// 生成器一般都和迭代器一起使用
// generator函数, 可以通过yield关键字,将函数挂起,为了改变执行流提供了可能性
// 同时为了做异步编程提供了方案
// 它跟普通函数的区别
// 1.function 后面函数名之前有*号
// 2.只能在函数内部使用yield表达式,让函数挂起

function* func(){
	console.log('one')
	yield 2;
	console.log('two')
	yield 3;
	console.log('end')
}
// 返回一个遍历器对象 可以调用next()
let fn = func();
console.log(fn.next())
console.log(fn.next())
console.log(fn.next())

Promise的基本使用

// 相当于一个容器,保存这未来才会结束的事件(异步操作)的一个结果
// 各种异步的操作都可以用同样的方法进行处理

// 对象的状态不受外界的影响 处理异步操作三个状态 Pending Resolved Rejected
// 一旦状态改变,就不会在变,任何时候都可以得到这个结果

// then() 第一个参数是resolve 回调函数,第二个参数是可选的 是reject 状态的回调函数
// then() 返回的是一个新的Promise示例,所以可采用链式编程

// catch() 用于捕获异常信息


// 1.resolve() 可以直接将一个对象转换为Promise对象
// 2.all() 同时执行多个promise 对象
// 3.race() 某个异步请求设置超时时间,并且在超时后执行响应的操作 

async 的用法

// 异步操作更加方便
// 基本操作 async 它会返回一个Promise对象
async function f(){
	let s = await 'hello'
	let data = s.split('')
	return data;
}
// 如果async 函数中有多个await 那么 then 函数会等待所有的await指令,运行完成,知道遇到return
f().then(v => {console.log(v)})

http://www.niftyadmin.cn/n/4949578.html

相关文章

Go framework-Beego

目录 一、Beego 1、创建Beego项目 1.1、命令行方式创建项目 1.2、使用bee工具 1、bee api&#xff0c;创建API应用 2、bee new 命令会自动创建beego 的go mod项目。 2、Admin管理后台 一、Beego Beego用于在Go中快速开发企业应用程序&#xff0c;包括RESTful API、web应…

postgresql 谨慎使用正则删除(%,_)

建表 CREATE TABLE public.ellistest (id bigserial NOT NULL,"name" varchar null,primary key (id) );插入数据 删除含有_线的数据 你会发现表被清空了 delete from ellistest where name like %_%原因 百分号(%)用于表示0、1或多个字符或数字。 下划线通配符…

国标GB28181安防视频平台EasyGBS显示状态正常,却无法播放该如何解决?

国标GB28181视频平台EasyGBS是基于国标GB/T28181协议的行业内安防视频流媒体能力平台&#xff0c;可实现的视频功能包括&#xff1a;实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。国标GB28181视频监控平台部署简单、可拓展性强&#xff0c;支持将…

微服务架构1.0

微服务架构 微服务架构是一种应用程序架构模式&#xff0c;将一个应用程序划分为一组小型、独立、自治的服务&#xff0c;每个服务专注于一个特定的业务功能。 每个微服务都可以独立开发、部署、扩展和维护&#xff0c;通过定义良好的接口和协议&#xff0c;它们可以相互通信…

由“美”出发 听艺术家林曦关于美育与智慧的探讨

不久前&#xff0c;林曦老师与我们的老朋友「十点读书」进行了一次线上直播&#xff0c;有关林曦老师十余年的书法教学&#xff0c;和传统美育的心得&#xff0c;以及因此诞生的新书《无用之美》。      这一次的直播&#xff0c;由“美”的主题出发&#xff0c;延伸出美育…

概率论与数理统计:第五章:大数定律与中心极限定理

文章目录 Ch5. 大数定律与中心极限定理(一) 依概率收敛(二) 大数定律1.伯努利大数定律2.切比雪夫大数定律3.辛钦大数定律 (三) 中心极限定理1.列维-林德伯格 中心极限定理 &#xff08;独立同分布&#xff0c;不指定具体分布&#xff0c;近似服从于标准正态分布&#xff09;2.德…

爬虫逆向实战(四)--猿人学第一题

一、数据接口分析 主页地址&#xff1a;猿人学第一题 1、抓包 当我们打开F12时会发现直接debugger了&#xff0c;是一个无限debugger&#xff0c;我们直接右键debugger那一行&#xff0c;然后选择“一律不再此处暂停”就可以了 通过抓包可以发现登录接口是api/match/1 2、…

C++中String的语法及常用接口用法

在C语言中&#xff0c;string是一个标准库类&#xff08;class&#xff09;&#xff0c;用于处理字符串&#xff0c;它提供了一种更高级、更便捷的字符串操作方式&#xff0c;string 类提供了一系列成员函数和重载运算符&#xff0c;以便于对字符串进行操作和处理。 一、string…