首先,大家应该都知道javascript,一种脚本语言。
而谈到javascript,就不得不聊到ECMAscript语言规范,或者说ECMAscipt语言。
他们之间的关系说复杂也不复杂,且听我一 一道来。
(可参照:https://blog.csdn.net/kese7952/article/details/79357868)
话说江湖上有一个门派,名叫网景派(公司),构建浏览器是网景派的一大武功绝学,其于公元1994开创了江湖上最稳定的浏览器。
但苦于此功法练出的浏览器缺乏和网页交互的能力,用户只能浏览,网页和浏览器不能交互,进而和服务器实现不了交互,于是想创出一门运行在浏览器的脚步语言(内功心法)。
网景派和大派sun派是兄弟派,当时sun派创出了java轰动一时,网景派觉得很牛逼,觉得sun派可能靠他一统江湖,于是网景派想借鉴sun公司的java功法的形式,创出浏览器的脚本语言。
并把这一个任务交给了长老笨蛋奇,笨蛋奇看不起java,但被领导压迫没办法,用十天创出了javascript。
(JavasSript商标如今属于oracle公司,因为sun公司被oracle收购。JavaScript早年被sun公司注册,代表javascript这门语言。但是最早发明javascript是网景公司。)
在网景派开创了javascript的浏览器脚本之后,在江湖掀起了腥风血雨,各家都汲取其功法的特殊性用到浏览器上,又有两家门派开创了相类似的功法,一个是大派微软,一个是“涩衣微”派,当然除此之外,还有其他小门派也开创了一些。而这三个门派,通过三种功法把持了浏览器领域的一番天地。
然而,功法总有所不同,人们在练功的时候使用的浏览器内部功法原理的不同造成了老是出问题。因为大家不可能用同样浏览器,这使得他们不能交流自己的修炼所得。
无数的脚本语言,造成了江湖浏览器上脚本语言的乱象。
我举个例说,ECMAscript语言相当于普通话,javascript相当于方言,但这个方言在现在已经广泛传播,变成了大家都通用的语言,但这个方言是在经过修正之后被传播的,被ECMAscript规范(ECMA-262)修正之后,他的很多话变得更规范了,而且他必须遵守这个规范,因为除他之外还有其他的方言,只不过使用的人比较少,而这个规范是几个方言大家中和之后讨论出来的,方便每一个脚本语言的交流。
以下内容转载自:(https://www.jianshu.com/p/10cfcb536d4a)
1997年
JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第 39 技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法和语义”(http://www.ecma-international.org/memento/TC39.htm)。 锤炼出了 ECMA-262第一版,该标准定义了名为 ECMAScript 的全新脚本语言。
1998年
国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。同年发布了ECMA-262第二个版(ES2).第二个版本基本没有加新功能。
2002年
ECMA-262第三版(ES3),新增引入了强大的正则表达式,更好的字符串处理,新的控制语句,try / catch异常处理,更严格的错误定义,数字输出的格式化以及预期未来语言增长的微小变化。第三版在当时应用非常广泛,几乎所有的浏览器都支持ES3的标准。
ECMA-262第4版本(ES4)夭折,部分功能被迁移到ES6中。
2009年
,ECMA-262第五版(ES5)发布。在ES3的基础上增加了很多功能:包括访问器属性,对象的反射创建和检查,属性属性的程序控制,附加的数组操作函数,对json对象编码格式的支持以及提供增强的错误检查和程序安全性的严格模式。
2011年
被批准为国际标准iso / iec 16262:2011。同年发布ES5.1版本(对ES5做一些升级优化)同时被MCMA-262和ISO/IEC批准。
2015年
ECMA-262第六版(ES6或者叫ES 2015语言规范),ES6可以说从2000年,ES3发布之后就开始沉淀,由于ES4的夭折,ES4中的一些功能特性一直等到ES6才发布,所以第六版的完全是十五年的努力的结果。
ES6为大型应用程序提供更好的支持,创建Lib库,以及使用ecmascript作为其他语言的编译目标。ES6主要新增了如下功能:主要增强包括模块,类声明,词法块范围,迭代器和生成器,异步编程的承诺,解构模式和适当的尾部调用。
内置的ecmascript库被扩展为支持额外的数据抽象,包括映射,集合和二进制数值数组,以及对字符串和正则表达式中的
总结:javascript是在ES规范下的一种方言,只不过被广泛使用。是大一统功法的一部分。
所以我们学javascript的时候,先学大一统功法ECMAscript(基于规范ES6),再学他的一些特点的东西。
也就是dom和bom。
所以我们要知道的另外一点,比如其他的脚本语言,他如果没运行在浏览器上,肯定就没有dom和bom操作,但肯定还有其他的操作是javascript没有的。主要看他运行的环境。但一点不变,都遵循ECMAscript规范。
比如node.js,他遵循规范,但加入的是i/o无阻塞。