【原创】ES7 8 9 10 11 新特性

ES7 新特性

    const arr = ['西游', '三国', '红楼', '水浒'];
    console.log(arr.includes('水浒'));
    console.log(2 ** 10);

ES8

async 和 await

async 函数的返回值是一个 Promise 对象。

    async function fn () {
      return 123;
    }
    const result = fn();
    console.log(result);
const fs = require('fs');
function readFile (path) {
  return new Promise((resolve, reject) => {
    fs.readFile(path, (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  });
}

async function main () {
  let text = await readFile('../promise/文字.txt');
  let test = await readFile('../promise/测试.txt');
  let content = await readFile('../promise/内容.txt');
  console.log(text.toString());
  console.log(test.toString());
  console.log(content.toString());
}

main();
import { resolve } from "path";

function sendAjax (url) {
  return new Promise((resolve, reject) => {
    const x = new XMLHttpRequest();
    x.open('GET', url);
    x.send();
    x.onreadystatechange = function () {
      if (x.readyState === 4) {
        if (x.status >= 200 && x.status < 300) {
          resolve(x.response);
          reject(x.status);
        }
      }
    };
  });
}

async function main () {
  let result = await sendAjax('https://xxxx');
}

对象方法扩展

Object.keys(school)
Object.values(school)
Object.entries(school)

ES9

rest 扩展

在 ES6 中提供了扩展,但是是用于数组的,ES9 为对象也提供了 rest 扩展。

function connect ({ host, port, ...user }) {
  console.log(host);
  console.log(port);
  console.log(user);
}

connect({
  host: '127.0.0.1',
  port: 3306,
  username: 'root',
  password: 'root',
});

ES10

Object.fromEntries

const result = Object.fromEntries([
  ['name', 123],
  ['school', 'Java, 前端', '222']
]);

console.log(result);

Object.fromEntries 与 Object.entries 互为逆运算,后者可以将对象转换为数组

trimStart 和 trimEnd

清除字符串左侧和右侧的空白字符。

flat

将多维数组转化为低维数组。

let arr = [1,2,3,[4,5,[6,7,8]];
arr.flat(2);

ES11

私有属性

class Person {
    name;
    #agt;
}

可选链操作符

const dbHost = config && config.db && config.db.host;
const dbHost = config?.db?.host;

bigInt

let num = 520n
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注