ECMAScript——JavaScript的核心

Stella981
• 阅读 553

      JavaScript(简称:JS)是一种动态类型、弱类型的直译式脚本语言。也就是说它的数据类型不需要声明,不同类型之间会隐式转换为被赋值的类型。它不需要编译,直接由浏览器解释执行。JavaScript由ECMAScript(简称:ES)、DOM、BOM三大部分组成:ECMAScript规定了语言的语法和基本对象;DOM(文本对象模型)处理网页的节点内容;BOM(浏览器对象模型)与浏览器进行交互。

      早期Nombas公司设计了一种简单的嵌入式脚本语言ScriptEase,有人将这个东西与后来的JavaScript、JScript称为三足鼎立,我不大认同。当时网景(Netscape)为给网页加点特技,避免用户的某些失误操作只有在服务器响应后才知道,它与ScriptEase无论从哪个方面都构不成对立。还有人认为ScriptEase是JavaScript的基础,如果非要牵强的理解,大概源于它的设计理念:保持与某些语言的相似性,以便开发人员很快学会(ps:据说这是个谣言)。

      为了解决当时的交互问题,网景雇佣Brendan Eich开发了这种脚本语言,这哥们儿就用了10天。最初叫Mocha,后又改名LiveScript,再后来与Sun公司达成协议,蹭一下正火的Java的WIFI,更名JavaScript。它和Java没有太大关系,除了语法有点像之外,毕竟有点模仿的影子在。WIFI蹭的好,一下子火了,IE又在其基础上搞了个JScript。这样搞下去就不好玩了,于是网景大佬将JavaScript提交给了Ecma国际组织,希望以此将JavaScript作为国际标准掌握话语权。最终Ecma召集了许多大佬来参与这个标准讨论,随后便有了这个标准——ECMAScript。

      ECMAScript相当于是建立在JavaScript基础之上,为什么反而成为自己的标准呢?接下来是我个人的观点,不喜勿喷。首先,ECMAScript抛弃了一些JavaScript不兼容的东西,毕竟最初设计是为了自己服务,成了标准提取都有用的部分。其次,各家大佬纷纷提出自己的一些观点,原本JavaScript又会有一些增删。最后,大家都提JavaScript,而不直接提ECMAScript,这就意味着JavaScript才是这个标准的符号。那为什么不以JavaScript为名作为标准?因为它是网景的商标,而且它其实还是有差异的。JavaScript总体上以ECMAScript为标准,却不保证与标准版本兼容,在浏览器最终部署上还将会有一些不属于标准的浏览器特性。

      换句话说,ECMAScript只是语法上的统一,JavaScript才是真正的统一。不管浏览器搞什么幺蛾子,反正你叫JavaScript,不会再叫JScript。某一天哪家浏览器内核一家独大,那么ECMAScript没有通过的标准,它也是标准!比如当下的手机市场,两大主流系统:苹果的IOS和谷歌的安卓。它们的浏览器内核都是webkit,并不能单纯地说它在前端的兼容性就统一了,两码事。每个手机部署的浏览器版本不同,软件与系统的兼容不同,都会带来表现形式的问题。只能说,相对IE时代,没有那么多的特性要去处理,问题会相对少很多。

      1997年ECMAScript 1.0发布,到1999年ECMAScript 3.0发布并被浏览器广泛地支持,成为JavaScript的通行标准。2007年ECMAScript 4.0草案发布,要求对3.0进行大幅升级,提出了不少在当时很超前的概念,保守势力和开放势力一直相持不下。到2008年,决定废除4.0的开发,只做一小部分改善成为了ECMAScript 5.0。2011年ECMAScript 5.1成为国际标准,此后ECMAScript相当于没有发展。直到ECMAScript 2015诞生,也就是俗称的ECMAScript 6.0,并宣布一年发布一个版本,以“ECMAScript 年份”命名。

      ECMAScript 3.0之后其实都没有什么太大的发展,尽管存在诸多缺陷,但依旧能满足开发需要。随着时代的进步,旧的版本在思想上开始显得落后。市场上出现了许多更为先进的思想,比如为了模块化而出现的CommonJS规范、AMD规范、CMD规范等等。没准儿就被超越被干掉,如果有更为便捷的脚本编写方式,比如CoffeScript、TypeScript等等,虽说它的最终会被编译为JS文件。有时候淘汰并不一定是被弃用,而是即便存在也不被关注。ECMAScript 6.0给人的感觉就是出现得很被动,还算幸运的是有babel这样的辅助工具存在,可以将新标准编译为通用版本。否则,ECMAScript标准升级与否,或许还真不被人关心。

      ES6也并没有让下面的编程玩家失望,新的特性完善了旧版本的同时也加入了更为便捷的特性。举个例子来说。ES5声明变量var,这个关键字是有变量提升的现象的,没有块作用域。let关键字改变了这一现状,写循环的时候不用再害怕始终是一个值。ES5完全没有继承这个概念只得依靠原型链,新标准提供新的关键字class使得代码更简洁也思路更清晰。加上解构赋值、缺省值、Promise、Generator等等语法的出现使得JavaScript编程变得更加有趣,这比TypeScript之流似乎更显得有智慧。

      这里花了很大篇幅来介绍JavaScript的发展,它或许于编程本身带来不了什么,但在学一门语言的时候顺便去了解一下它的历史或许会得到比知识更为有趣的东西。记得我之前学ES6,看的是阮一峰老师的《ECMAScript 6入门》。刚进门阮老师就说那是中级难度问我是不是新手进不进新手村,我想自己算不上菜鸟去巩固一下基础也还行,于是走进了新手村——《JavaScript语言入门教程》。里面详细讲述了JavaScript的诞生历程,更为重要的是提到了JavaScript的周边应用发展,就如醍醐灌顶一般。我最大的感触就是我还在编程路上玩泥巴的时候单页应用已经诞生了——2012年大前端的技术雏形已经诞生了。这还不算完,很多语言都在做一些相互转换的工作,企图通过一套语言程序来达到多平台部署。很明显,这种思想已经转换成了生产力。

      感谢阮一峰老师!他的书真心觉得不错,他在讲解ES6的时候会讲ES5怎么做,这样对比着来我觉得很有收获。刚入门的朋友可以去看下,这也是我不写教程的原因,有这些大神在我就是个玩泥巴的!

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
凝雪探世界 凝雪探世界
3年前
js-Answers一
JavaScript的组成JavaScript由以下三部分组成:1.ECMAScript(核心):JavaScript语言基础2.DOM(文档对象模型):规定了访问HTML和XML的接口3.BOM(浏览器对象模型):提供了浏览器窗口之间进行交互的对象和方法JS的基本数据类型和引用数据类型
Wesley13 Wesley13
2年前
java script三大组成部分
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。JavaScript的三大组成部分是:1、ECMAScript:JavaScript的核心,描述了语言的基本语法(var、for、if、a
Stella981 Stella981
2年前
Javascript核心对象
JavaScript的实现包括以下3个部分:1)核心(ECMAScript):描述了JS的语法和基本对象。2)文档对象模型(DOM):处理网页内容的方法和接口3)浏览器对象模型(BOM):与浏览器交互的方法和接口ECMAScript扩展知识:① ECMAScript是一个标准,JS只是它的一个实现,其他实现包括ActionScript。
Stella981 Stella981
2年前
JavaScaript学习笔记第(一)
js由三部分组成,分别是ECMAScript、DOM、BOM其中ECMAScript规定了js的语法js是一门解释型语言、脚本语言、动态类型语言、基于对象语言书写js代码和CSS一样,有三个书写的地方,第一个是使用<script标签,再<sccript标签中书写js代码,标签一般都在body标签中的末尾,第二个地方是书写再结构里,html标签
Stella981 Stella981
2年前
ECMAScript6入门 学习之简介
1.什么是ECMAScript6?ECMAScript6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。可能大家会疑惑ECMAScript和JavaScript是什么关系?为什么不
Stella981 Stella981
2年前
JavaScript基础
_1,js组成_       核心:ECMAScript标准                 此标准指定了js的基础语法,数据类型,关键字,操作符,对象;       DOM:文档对象模型标准(DocumentobjectModel)         是js针对xm
Wesley13 Wesley13
2年前
Java scirpt 简介
javascript简介:  JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。基本特点:  JavaScri
Wesley13 Wesley13
2年前
JS篇(004)
答案:1.脚本语言。JavaScript是一种解释型的脚本语言,C、C等语言先编译后执行,而JavaScript是在程序的运行过程中逐行进行解释。2.基于对象。JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象。3.简单。JavaScript语言中采用的是弱类型的变量
Stella981 Stella981
2年前
JavaScript 基础
1.简介:  JavaScript(JS)是一种基于对象和事件驱动,可以与HTML标记语言混合使用的脚本语言。广泛用于客户端Web开发,常用来给HTML网页添加动态功能,比如响应用户的各种操作。其编写的程序可以直接在浏览器中解释执行。Javascript的国际标准是ECMAScript(由欧洲计算机制造商协会(ECMA)结合J