ECMAScript(简称 ES)是 JavaScript 的标准化规范,定义了这门编程语言的语法、类型、语义以及与浏览器等环境的交互方式。以下是 ECMAScript 的一些特点:
- 脚本语言: ECMAScript 是一种解释性的脚本语言,不需要编译成二进制代码就可以在支持它的环境中运行。
- 弱类型语言: JavaScript 是弱类型语言,变量不需要明确声明其类型,可以在运行时自动转换类型。
- 面向对象: 支持基于对象的编程范式。对象是 JavaScript 中的核心概念,几乎所有内容都是对象或者基于对象的。
- 原型继承: JavaScript 使用原型继承机制,允许对象直接从其他对象继承属性,而不需要使用类的概念。
- 函数作为一等公民: 函数在 JavaScript 中是一等公民,可以像变量一样被传递、赋值,并作为参数或返回值。
- 异步编程: 支持异步编程模型,通过回调、Promise、async/await 等机制来处理异步操作,如网络请求、定时器等。
- 动态性: 允许在运行时改变对象结构,包括添加新属性、删除属性或修改属性值。
- 跨平台性: 可以在不同的平台上运行,包括浏览器、服务器端(Node.js)等。
- 事件驱动: 在浏览器环境中,JavaScript 常用于处理用户交互和事件响应,支持事件驱动编程模型。
- 开放性: ECMAScript 是一个开放标准,允许开发者通过各种方式扩展语言的功能。
- 1995年,网景工程师Brendan Eich(布兰登·艾奇)花了10天时间设计了JavaScript语言,1996年微软发布了JScript,同时拉开了Navigator和Internet Explorer浏览器大战的序幕(到2002年IE完胜,占据全世界96%的市场份额);
- 为了让各大浏览器统一编程规范,1997年6月ECMA(欧洲计算机制造联合会)以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262,从此浏览器厂商都是按照这个规范来开发自己的浏览器产品;
- 1999年12月ES3发布,到2011年6月ES5发布(2007年的ES4夭折:改动太大),ES3占据了10年历程,也是JS语言的基础。2015年6月ES6发布(但是由于之后规定每年发布一个新的版本,所以后改名ES2015),2016年6月对2015版本增强的2016版本发布,此后相继有ES2017、ES2018…
- ES2015(ES6):let/const、解构赋值、数组/对象等方法扩展、Symbol、Set/Map、Proxy、Reflect、Promise、Iterator(for of)、Generator、Class、ES6Module...
- ES2016(ES7):Array.prototype.includes、指数运算符(a**b)...
- ES2017(ES8):async/await、Promise.prototype.finally、Object.values/entries/getOwnPropertyDescriptors、字符串填充 padStart和padEnd、SharedArrayBuffer共享内存、Atomic原子操作...
- ES2018(ES9):对象的拓展运算符、正则表达式上的一些升级、异步遍历器...
- ES2019(ES10):String.prototype.trimStart/trimEnd、Object.fromEntries、Array.prototype.flat/flatMap、catch的参数改为可选、Symbol.description、JSON Superset超集、stringify加强格式转化、Array.prototype.sort更加稳定、Function.prototype.toString重新修订...
- ES2020(ES11):String.prototype.matchAll、import() 、BigInt、Promise.allSettled、globalThis、可选链、空值合并运算符、export * as ns from “mod”、for-in机制完善...
- ES2021(ES12):String.prototype.replaceAll、Promise.any、WeakRefs、??=、||=、&&=、Numeric separators(数字分隔符)..
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!