ECMAScript和JavaScript的关系

78 阅读2分钟

ECMAScript和JavaScript的关系

ECMAScriptJavaScript 是紧密相关的概念,但它们并不是完全相同的。以下是它们之间的关系和区别:

  1. JavaScript 是什么?
  • JavaScript 是一种脚本语言,主要用于网页开发,使网页具有动态交互功能。
  • 它最初由 Netscape 公司的 Brendan Eich 在 1995 年开发,最初命名为 Mocha,后来改为 LiveScript,最终命名为 JavaScript
  • JavaScript 不仅可以在浏览器中运行,还可以通过 Node.js 在服务器端运行。
  1. ECMAScript 是什么?
  • ECMAScript 是 JavaScript 的标准化规范,由 Ecma International 组织制定。
  • JavaScript 是 ECMAScript 规范的一种实现。
  • ECMAScript 定义了语言的语法、类型、语句、关键字、操作符、对象等核心特性。
  1. ECMAScript 和 JavaScript 的关系
  • ECMAScript 是标准,JavaScript 是实现
    • ECMAScript 是 JavaScript 的语言规范,规定了 JavaScript 应该如何实现。
    • JavaScript 是 ECMAScript 规范的一种具体实现。
  • 其他实现
    • 除了 JavaScript,还有其他语言也遵循 ECMAScript 规范,例如 ActionScript(用于 Adobe Flash)。
  • 版本演进
    • ECMAScript 的版本号代表了 JavaScript 的核心特性更新。例如,ES5(2009 年发布)、ES6(2015 年发布,也称为 ES2015)、ES7(2016 年发布,也称为 ES2016)等。
    • JavaScript 引擎(如 V8、SpiderMonkey)会根据 ECMAScript 规范实现这些特性。
  1. JavaScript 的组成部分

JavaScript 不仅仅包含 ECMAScript,还包括以下部分:

  • ECMAScript:语言的核心(语法、类型、操作符等)。
  • DOM(文档对象模型):用于操作 HTML 和 XML 文档的 API。
  • BOM(浏览器对象模型):用于操作浏览器窗口的 API(如 window 对象)。
  1. ECMAScript 的版本历史

ECMAScript 的版本更新推动了 JavaScript 的发展:

  • ES3(1999):引入了正则表达式、try/catch 等特性。
  • ES5(2009):引入了严格模式 ("use strict")、JSON 支持、数组方法(如 mapfilter)等。
  • ES6(2015,也称为 ES2015):重大更新,引入了 letconst、箭头函数、类、模块、解构赋值等。
  • ES2016(ES7):引入了 Array.prototype.includes() 和指数运算符 (**)。
  • ES2017(ES8):引入了 async/awaitObject.values()Object.entries() 等。
  • ES2018(ES9):引入了异步迭代、Promise.prototype.finally()、Rest/Spread 属性等。
  • ES2019(ES10):引入了 Array.prototype.flat()Array.prototype.flatMap()Object.fromEntries() 等。
  • ES2020(ES11):引入了可选链操作符 (?.)、空值合并操作符 (??)、BigInt 等。
  • ES2021(ES12):引入了 String.prototype.replaceAll()Promise.any()、逻辑赋值操作符 (&&=, ||=, ??=) 等。

总结

  • ECMAScript 是 JavaScript 的标准化规范,定义了语言的核心特性。
  • JavaScript 是 ECMAScript 的一种实现,同时还包括 DOM 和 BOM 等浏览器相关的 API。
  • ECMAScript 的版本更新推动了 JavaScript 的发展,使其功能更加强大和现代化。

简单来说,ECMAScript 是规范,JavaScript 是实践

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github