ES7&ES8复习总结


ES2016 & ES2017复习

ES2016 - Exponentiation(**)

乘方的使用

let x=5;
let z = x**2; // z = 25

//x**y 的结果和 Math.pow(x,y) 相等

ES2016 - Exponentiation Assignment(**=)

效果和 += -= *= 一样 只不过运算符号换为了乘方

let x=5;
 x **= 2 ///  x的值是25

ES2016 - Array.prototype.includes

用来判断数组中是否包含某个元素.

返回一个Boolean。包含返回true, 不包含返回false

const fruits = ["Banana","Orange","Apple","Mango"];

fruits.includes("Mango") // TRUE

ES2017 - String padding

ES2017添加了两条和String有关的方法: padStart 和 padEnd 作用是补全字符串长度。如果某个字符串不够指定长度,会在头部或者尾部补全。

padStart用于头部补全

padEnd用于尾部补全

//padStart使用例子
let str = "5";
str = str.padStart(4,0) //0005  第一个参数表述字符串的最小长度, 第二个参数用于设置补全的内容

'x'.padStart(5,'ab') // 'ababx'
'x'.padStart(4,'ab') // 'abax'

//padEnd使用例子
let str = "5";
str = str.padEnd(4,0);//5000

'x'.padEnd(5,'ab') // 'xabab'
'x'.padEnd(4,'ab') // 'xaba'

如果原字符串的长度 等于或者大于指定的最小长度 则返回原字符串

'xxx'.padStart(2,'ab') // 'xxx'
'xxx'.padEnd(3,'abb') // 'xxx'

如果用来补全的字符串与原字符串两者的长度之和超过了指定的最小长度,则会截去超出位数的补全字符串

'abc'.padStart(10,'0123456789') // '0123456abc'
//先保留原字符串,然后在补全字符串中截取 10-3=7 位的内容  也就是0123456  然后补全在原字符串前(因为是padStart)
//padEnd同理

如果省略第二个参数 ,默认使用空格补全长度

'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '
常见用途

1.为数值补全指定位数。

'1'.padStart(10,'0') // '0000000001'
'12'.padStart(10,'0') // '0000000012'
'123456'.padStart(10,'0') //'0000123456'

2.用于提示字符串格式

'12'.padStart(10,'YYYY-MM-DD') // 'YYYY-MM-12'
'09-12'.padStart(10,'YYYY-MM-DD') // 'YYYY-09-12'

ES2017 - Object.entries

Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)

const person = {
    firstName : "John",
    lastName : "Doe",
    age: 50,
    eyeColor : "blue"
};
document.getElementById("demo").innerHTML = Object.entries(person);

//
const fruits = {Bananas: 300, Oranges: 200, Apples: 500};
let text = "";
for (let [fruit, value] of Object.entries(fruits)) {
    text += fruit + ": " + value + "
"; } document.getElementById("demo").innerHTML = text;
将Object转换为Map ***

new Map() 构造函数接受一个可迭代的entries。借助Object.entries可以将Object转换为Map

var oj = {foo : "bar", baz: 42};
var map = new Map(Object.entries(obj));
console.log(map);// Map {foo : "bar", baz: 42}

ES2017 - Object.values

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for…in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同。

var obj = {foo: 'bar', baz: 42};
console.log(Object.values(obj)); // ['bar',42]

//array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.values(obj)); // ['a', 'b', 'c']

// array like object with random key ordering
// when we use numeric keys, the value returned in a numerical order according to the keys
var an_obj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.values(an_obj)); // ['b', 'c', 'a']

// getFoo is property which isn't enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 'bar';
console.log(Object.values(my_obj)); // ['bar']

// non-object argument will be coerced to an object
console.log(Object.values('foo')); // ['f', 'o', 'o']

如果参数不是对象,Object.values会先将其转为对象。由于数值和布尔值的包装对象,都不会为实例添加非继承的属性。所以,Object.values会返回空数组。如果参数为undefined或者null会报错。

console.log(Object.values(123))  //[]
console.log(Object.values(true)) //[]
console.log(Object.values(undefined))  //error
console.log(Object.values(null))       //error

ES2017 - Async Functions(异步函数)

详情介绍

CSDN上的理解

AsyncFunction 构造函数用来创建新的异步函数对象,JavaScript 中每个异步函数都是 AsyncFunction 的对象

重点

没有await的async函数跟普通函数没有什么区别

await是在等待一个异步任务的完成 一般来说是等待一个Promise resolve(也可以等待其他任何的值)

await只能在异步函数(async前缀)内执行

调用async函数虽然有等待,但是并不会造成阻塞,因为它内部所有的阻塞都封装在Promise对象中异步执行


文章作者: Silong Xu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Silong Xu !
 上一篇
react学习总结20-32 react学习总结20-32
react视频学习总结 20-32 视频链接:戳这里 视频20是一个组件封装 这里就不细说了 react-router-dom react中的路由管理工具:react-router-dom 下载一个稳定的版本,在视频中是version 5:
2021-09-14
下一篇 
使用json-server发送restful api 使用json-server发送restful api
使用 JSON-server 发送 fake restful api 当你没有或者不想创建一个数据库和前端发送api请求的时候,可以使用json-server发送mock api请求 下载: npm install -g json json
2021-07-07
  目录