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
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。