ES学习4

数值扩展

Number.EPSTLON

Number.EPSTLON是规定的最小精度,如果两数之差小于Number.EPSTLON,则可以认为这两个数相等

常用于浮点数计算

二进制和八进制

使用0b表示二进制,0o表示八进制,0x表示十六进制

Number.isFinite()

该方法检测一个数是否为有限数

Number.isNaN()

Number.isFinite()检查一个数值是否为NaN

Math.trunc()

Math.trunc()将数值的小数部分抹掉

Math.Sign()

Math.Sign()判断一个数是整数、负数还是0

对象方法扩展

Object.is()

判断两个值是否完全相等

其与===的区别是:

判断两个NaN是否相等时,Object.is()的结果是true,===的结果是false

Object.assign()

用于对象的合并,对于相同的属性,后面的对象的属性值会覆盖前一个对象的属性值

Object.setPrototypeof()

用于设置原型对象

Object.getPrototypeof()

用于获取原型对象

模块化

模块化指的是将一个大的程序文件拆分成许多小的文件,然后再将小文件组合起来

好处:防止命名冲突、便于代码复用、具有高维护性

语法

主要由export和import实现

export:用于规定模块的对外接口

import:用于输入其他模块提供的功能

		<script type="module">
			// 引入模块module.js
			import * as m1 from "./module.js";
			// 解构赋值形式
			// import{fn as fn0,a} from "./module.js";
			// fn0();
			// 注意,解构赋值形式引入默认暴露时,要给default赋别名
			// import {default as m1} from "./module.js";
			// m1.fn2();
			// 简便形式,只针对默认暴露
			// import m1 from "./module.js";
			// m1.fn2();
			// 调用module中的函数
			m1.fn();
			m1.fn1();
			m1.default.fn2();
		</script>

mudule.js里:

//分别暴露
export let a=1;
export function fn(){
	console.log('module');
}
//统一暴露
let b=0;
function fn1(){
    console.log('module1');
}
export{b,fn1};
//默认暴露
export default{
    school:'SCU';
    fn2:function(){
         console.log('module2');
    }
}

babel

有些浏览器不支持模块化,所以使用babel进行代码转换,将代码转换为浏览器支持的代码。

jQuery

ES6引入jQuery包可以使用:import $ from 文件路径

ES7新特性 

Array.prototype.includes

用来检测数组中是否含有某元素,返回布尔类型

指数操作符

**,幂运算

ES8新特性

async函数和await表达式

async函数

async函数返回对象是promise对象,其结果由async函数执行的返回值决定

		<script>
			// 定义async函数
			async function fn(){
				// 如果return的值不是promise对象,则函数返回的promise对象都是成功的
				// 抛出错误,返回的结果是一个失败的promise对象
				// 如果return的是一个promise对象,则函数返回的promise对象成功与否取决于return的promise对象
				return 1;
				
			}
		</script>

await表达式

await表达式必须写在async函数中,await右边的表达式一般是promise对象,而且await返回的是这个对象成功的值,如果这个promise对象失败了,就会抛出异常,需要通过try...catch捕获处理

		<script>
			// 定义一个promise对象
			const p=new Promise((resolve,reject)=>{
				resolve('成功值');
			})
			async function fn(){
				// await表达式
				let result =await p;
				console.log(result);
			}
			// 输出 成功值
			fn();
		</script>

async函数和await表达式结合使用

		<script>
			function getdata(data){
				return new Promise((resolve,reject)=>{
					resolve('get '+data);
			})
			}
			async function read(){
				let a=await getdata('first');
				console.log(a);
				let b=await getdata('next');
				console.log(b);
				let c=await getdata('last');
				console.log(c);
			}
			read();
		</script>

对象方法扩展

Object.values()

返回一个给定对象的所有可枚举属性值组成的数组

Object.entries()

返回一个给定对象的自身可遍历属性[key,value]组成的数组

Object.getOwnPropertyDescriptors()

获取对象属性的描述对象

ES9新特性

rest参数和扩展运算符

在ES9中提供了像数组一样的rest参数

扩展运算符可以将对象拆分成由键值对组成的序列

正则扩展

命名捕获分组

		<script>
			let s='my name is lili and i am 18 yesrs old';
			// 提取名字和年龄
			// 不使用命名捕获分组
			// const reg= /my name is (.*) and i am (.*) yesrs old/;
			// const result=reg.exec(s);
			// // 输出lili
			// console.log(result[1]);
			// 命名捕获分组,更方便提取捕获的数据
			const reg1= /my name is (?<name>.*) and i am (?<age>.*) yesrs old/;
			const result=reg1.exec(s);
			// 输出lili
			console.log(result.groups.name);
		</script>

反向断言

<script>
			// 定义字符串
			let s='7wugsdd6yq是87679好的'
			// 获取好的前面和是后面的数字
			// 正向断言,根据后面的内容来判断前面的内容是否合法
			const reg=/\d+(?=好的)/;
			result=reg.exec(s);
			// 输出87679
			console.log(result[0]);
			// 反向断言,根据前面的内容来判断后面的内容是否合法
			const reg1=/(?<=是)\d+/;
			result1=reg1.exec(s);
			// 输出87679
			console.log(result1[0]);
		</script>

dotAll模式

dot是.的意思,元字符,表示除换行符以外的任意单个字符

实际应用中可以用.*通配替代换行符

对象扩展方法

Object.fromEntries

创建数组,其参数是二维数组或map类型

		<script>
            //参数为二维数组
			const o=Object.fromEntries([
				['name','lili'],
				['age',18]
			]);
            // 参数为map
			const m=new Map();
			m.set('grade',6);
			const o1=Object.fromEntries(m);
			console.log(o1);
		</script>

ES10

字符串方法扩展

trimStart()负责清除字符串左侧空白

trimEnd()负责清除字符串右侧空白

数组方法扩展

flat()

可以将多维数组转换为低维数组,参数表示降维的深度,默认为1

flatMap()

相当于flat和map的结合,是将map的结果的维度降低

Symbol.prototype.description

用来获取symbol的描述字符串

ES11

私有属性

类中一些属性被设置为私有属性,不能被外部访问,使用#属性名表示

Promise.allSettled

接收一个由promise对象组成的数组,返回一个promise对象,其永远是成功的,成功值是一个由对象组成的数组,每个对象对应包含接收的数组中的promise对象的状态和状态值,接收的promise对象组成的数组中有多少promise对象,这里成功值中就由多少个对象组成

String.prototype.matchAll

用来得到正则批量匹配的结果

可选链操作符

?.

对对象类的参数使用,可以避免层层判断

动态import

可以实现按需加载

使用import('文件路径'),其返回对象是一个promise对象,导入成功则返回的promise对象是成功的,成功值是导入的模块,可以使用then方法调用

BigInt

一种新的数据类型,大整数,设定方法是在普通整数后加一个n,例如let a = 469n,

也可以使用BigInt()将整数转换为大整数

主要应用于大数值运算

绝对全局变量

globalThis,始终指向全局对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值