1.ES7新特性

1.1 Array Includes

ES7之前,如果我们想判断一个数组中是否包含某个元素,需要通过 indexOf 获取结果,并且判断是否为 -1。

ES7之后,我们可以通过includes来判断一个数组中是否包含一个指定的元素,根据情况,如果包含则返回 true,否则返回false

const arr = [10, 20, 30];

console.log(arr.includes(30)); // true
console.log(arr.includes(40)); // false

1.2 指数运算符

ES7之前计算数字的乘方需要通过 Math.pow 方法来完成。

ES7之后,增加了 ** 运算符,可以对数字来计算乘方。

const result1 = Math.pow(2, 2);
const result2 = 3 ** 2;

console.log(result1); // 4
console.log(result2); // 9

2.ES8新特性

2.1 Object values

之前我们可以通过 Object.keys 获取一个对象所有的key

在ES8中提供了 Object.values 来获取所有的value值:

const obj = {
  name: "kaisa",
  age: 18,
  height: 1.88,
};

console.log(Object.values(obj)); // ['kaisa', 18, 1.88]

2.2 Object entries

通过 Object.entries 可以获取到一个数组,数组中会存放可枚举属性的键值对数组。

  • 可以针对对象操作;
const obj = {
  name: "why",
  age: 18,
  height: 1.88,
};

console.log(Object.entries(obj)); // [['name', 'why'], ['age', 18], ['height', 1.88]]
  • 也可以针对数组、字符串进行操作, 数组和字符串会将索引作为key(了解)
const arr = [10, 20];
const str = "ab";

console.log(Object.entries(arr)); // [['0', 10], ['1', 20]]
console.log(Object.entries(str)); // [['0', 'a'], ['1', 'b']]

2.3 String/Padding

某些字符串我们需要对其进行前后的填充,来实现某种格式化效果,ES8中增加了 padStartpadEnd 方法,分别是对字符串的首尾进行填充的。

  • 第一个参数, 填充到多少位; 第二个参数, 用什么来填充
const message = "Hello";

// 在开头用a填充到10位
console.log(message.padStart(10, "a")); // aaaaaHello
// 在结尾用b填充到10位
console.log(message.padEnd(10, "b")); // Hellobbbbb

我们最简单的一个应用场景: 比如时间是一位数时, 我们需要填充一个0

const hours = "15".padStart(2, 0);
const minutes = "5".padStart(2, 0);
const seconds = "9".padStart(2, 0);

console.log(`${hours}:${minutes}:${seconds}`); // 15:05:09

2.4 尾部逗号的添加

在ES8中,我们允许在函数定义和调用时多加一个逗号:

function foo(x, y, ) {
  console.log(x, y);
}

foo(2, 4, )

2.5 Object Descriptors

Object.getOwnPropertyDescriptors:

  • 获取某一个对象的描述 , 这个在之前已经讲过了,这里不再重复。

Async Function:async、await

  • 这些和promise息息相关, 后续讲完promise再讲

3.ES9新特性

ES9主要新增了以下知识点, 我们现在没办法讲解, 后续会将

  • Async iterators:后续迭代器讲解
  • Promise finally:后续讲Promise讲解
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐