电商的网站开发订单返利功能,微软做网站,论坛类网站如何备案,shopping跨境电商平台ES6#xff08;ECMAScript 2015#xff09;及以上版本引入了许多新特性#xff0c;每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述#xff1a;
ES6#xff08;ECMAScript 2015#xff09;#xff1a; let 和 const 声明#xff1a;引入块级作…ES6ECMAScript 2015及以上版本引入了许多新特性每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述
ES6ECMAScript 2015 let 和 const 声明引入块级作用域的变量声明用于替代 var 声明解决了变量提升的问题。 箭头函数用 “” 符号定义函数自动绑定父级上下文的 this并且没有自己的 this。 模板字符串使用反引号定义多行字符串和字符串插值可以在字符串中插入变量。 解构赋值从数组或对象中提取值赋值给变量方便处理数据。 默认参数值在函数定义中为参数设置默认值简化函数的调用。 扩展运算符用三个点…表示用于将数组或对象展开成多个参数或元素。 类和继承引入 class 和 extends 关键字实现了更加面向对象的编程。 Promise用于处理异步操作的对象解决了回调地狱的问题提供了更加优雅的异步编程方式。 Set 和 Map 数据结构Set 是一种无重复值的集合Map 是键值对的集合提供了更多方便的数据结构。 Symbol引入了一种新的原始数据类型 Symbol用于创建唯一的标识符。
ES7ECMAScript 2016 Array.prototype.includes新增了数组的 includes 方法用于判断数组中是否包含指定的值。 指数操作符引入了指数操作符**用于计算指数。
ES8ECMAScript 2017 async/await引入了 async 和 await 关键字用于简化异步编程使异步代码看起来像同步代码一样。 Object.values 和 Object.entries新增了 Object.values 和 Object.entries 方法分别用于获取对象的值和键值对。
ES9ECMAScript 2018 异步迭代器引入了异步迭代器和 for-await-of 循环用于异步迭代数据。 Rest/Spread 属性引入了对象的 Rest 和 Spread 属性用于简化对象的操作。
ES10ECMAScript 2019 Array.prototype.flat 和 Array.prototype.flatMap新增了数组的 flat 和 flatMap 方法用于扁平化和映射数组。 String.prototype.trimStart 和 String.prototype.trimEnd新增了字符串的 trimStart 和 trimEnd 方法用于去除字符串的开头和结尾空格。
ES11ECMAScript 2020 可选链操作符引入了可选链操作符?.用于简化链式属性访问防止出现未定义的错误。 空位合并操作符引入了空位合并操作符??用于提供默认值当值为 null 或 undefined 时使用默认值。 动态 import (): import(a).then(module { console.info(module) }); BigInt:有两种使用方式(1)在数字字面量的后面添加后缀n(2)使用其构造函数BigInt globalThis:windowWindow、selfWorker、globalnode.js。 最开始通过const globals (new Function(return this;))()拿到全局对象但 Chrome APP 内容安全策略不允许。 es6-shim穷举所有可能的全局属性 var getGlobal function () {if (typeof self ! undefined) { return self; }if (typeof window ! undefined) { return window; }if (typeof global ! undefined) { return global; }throw new Error(unable to locate global object);
};
var globals getGlobal();
if (!globals.Reflect) {defineProperty(globals, Reflect, {}, true);
}Promise.allSettled新增了 Promise.allSettled 方法用于处理多个 Promise 对象返回所有 Promise 的状态。
ES12ECMAScript 2021 String.prototype.replaceAll新增了字符串的 replaceAll 方法用于替换所有匹配的子字符串。 Promise.any新增了 Promise.any 方法用于处理多个 Promise 对象只要有一个完成即可。 逻辑赋值操作符 ??、、 ||有了这个新的标准中逻辑表达式的操作符、||、??也可以简写了 WeakRef创建一个对象的弱引用而不会阻止该对象被垃圾回收器回收。用构造函数来创建一个WeakRef对象ref new WeakRef(data); 用WeakRef.prototype.deref()来取到原对象的值。 obj ref.deref(); 下划线分隔符数字太长会导致可读性很差。使用了数字分隔符 _ 下划线就可以让数字读的更清晰。let num 2_3333_3333 和 let num 233333333等价 Intl.ListFormat是一个构造函数处理和多语言相关的对象格式化操作
//参数属性 style:long|short; type:conjunction|disjunction
const list [Apple, Orange, Banana]// 会根据语言来返回相应的格式化操作
// Apple, Orange and Banana
new Intl.ListFormat(en-GB, { style: long, type: conjunction }).format(list);
// Apple、Orange或Banana
new Intl.ListFormat(zh-cn, { style: short, type: disjunction }).format(list);Intl.DateTimeFormat API 中的 dateStyle 和 timeStyle 的配置项 (1) dateStyle 用于指定日期的显示样式可以设置为以下值full | long | medium | short (2) timeStyle 用于指定时间的显示样式可以设置为以下值full | long | medium | short
ES13ECMAScript 2022
Array.prototype.at新增了数组的 at 方法用于根据索引获取元素支持负数索引。
以上是 ES6 及以上版本的主要新特性每个版本都为 JavaScript 提供了更多的功能和语法糖使得开发更加便捷和高效。随着 ECMAScript 的不断演进未来的版本还会引入更多的新特性和改进使得 JavaScript 成为更加强大和灵活的语言。