什么是ECMAScript、什么又是ECMA?

Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织。1994年之前,名为欧洲计算机制造商协会(European Computer Manufacturers Association)。因为计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。现名称已不属于首字母缩略字。

        ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,英文名称是European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScriptJScript,但实际上后两者是ECMA-262标准的实现和扩展。

ECMAScript和JavaScript到底是什么关系?

很多初学者会感到困惑,简单来说,ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现。

什么是ECMAScript5,什么是ECMAScript6呢?

有人总认为ECMAScript5就是所谓的ECMAScript2015(是因为都有个5么?),其实是不对了,早在2009年12月份ECMA公司就发布了ECMAScript5。

而我们所说的ECMAScript6是2015年6月份发布的,是JavaScript语言的下一代标准,官方称ECMAScript2015,Mozilla公司将在这个标准的基础上,推出JavaScript 2.0。

ECMAScript6 是继ECMAScript5之后的一次主要改进,语言规范由ES5.1时代的245页扩充至600页。ECMAScript6的目标是使得 JavaScript语言可以用来编写大型的复杂的应用程序,成为企业级开发语言。ECMAScript6增添了许多必要的特性,例如:模块和类,以及一 些实用特性,例如Maps、Sets、Promises、生成器(Generators)等。尽管ECMAScript6做了大量的更新,但是它依旧完全 向后兼容以前的版本,标准化委员会决定避免由不兼容版本语言导致的“web体验破碎”。结果是,所有老代码都可以正常运行,整个过渡也显得更为平滑,但随 之而来的问题是,开发者们抱怨了多年的老问题依然存在。

令人不爽的是目前没有一款完全支持ES6的JavaScript代理(无论是浏览器环境还是服务器环境),所以我们真正使用ECMAScript6开发者需要将ECMAScript6代码转译为ECMAScript5代码。

什么是TypeScript?

TypeScript是一种由微软开发的自由和开源的编程语言。注意:官方给出的解释TypeScript是一种编程语言,请大家记住了。

它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。TypeScript扩展了JavaScript的 语法,所以任何现有的JavaScript程序可以不加改变的在TypeScript下工作。TypeScript是为大型应用之开发而设计,而编译时它 产生 JavaScript 以确保兼容性。它与JavaScript相比进步的地方包括:加入注释,让编译器理解所支持的对象和函数,编译器会移除注释,不会增加开销。 而JavaScript只是一个脚本语言,并非设计用于开发大型 Web 应用,JavaScript 没有提供类和模块的概念,而TypeScript扩展实现了这些特性。

TypeScript 最大的特点就是类型化,因此才叫做TypeScript。比起弱类型的JavaScript,类型化的TypeScript显得更加容易维护。

这 里少插一句,有人认为TypeScript有一个优点就是要经过TSC编译,他在编译期能够知道一些错误,这个难道算优点吗?我竟无言以对,不管是使用 TSC进行监听编译,还是手动触发命令编译,还是通过写Gulp脚本编译,其过程让人难以忍受(因为TSC和Ionic2提供的Gulp脚本我都使用 过),比如说你正在写一个Class,写完之后想马上看到效果,这个时候你发现你的CLI正在拼命地编译,好的时候会在3秒左右你能看到页面效果,设想一 下,如果工程更巨大,你觉得编译工程需要多久呢?

TypeScript要经过TSC编译并不是它的优势,如果让微软选择它宁愿所有的宿主环境能够直接运行它,编译期间能够检查的错误无非是语法与依赖之类 的错误,不代表真正运行的时候没有错误,我曾很多次在编译器无错误,在运行期间出现很多错误,这取决于你使用框架的机制和你业务逻辑的实现,如同你使用 servlet写服务一样,编译期间没错就一定代表运行时不会出异常么?两者其实没有可比性,其实要经过TSC编译恰恰是TypeSciprt的一个缺 点,在开发过程中反而给我们带来很多不便。

TypeScript和ECMAScript6的区别?

首 先我们都期望现在的宿主环境都能够直接运行ECMAScript6,我还没见过哪个人说期望浏览器直接能够运行TypeScript,因为毕竟 EXMAScript6是一个标准,而Typescript实现了ECMAScript6的特性,并且在此之上有进行扩展,也就是说Typescript 有些特性并不是ECMAScript6的规范,哪说两个是一个东西其实是不对的,只能说明他们有些写法是相同的不代表是一个东西。正因为目前而言我们现在 的宿主环境都无法直接运行TypeScript和ECMAScript6,所以两者都需要进行编译器编译,并且目标语言都是Javascript,在我们 编写Typescript的时候是可以使用javascript的,在我看来编译器大不了不编译那段javascript的代码对吧!所以说我们在写 Typescript的时候其实是可以写ECMAScript6的,原因非常简单你会使用TSC进行编译,那么你设想一下你写Typescript却是用 ECMA6的标准去编译,行么?现在你还认为两者是一个东西么?

如果你还不理解我就只能上代码了,比如我们现在定义一个类:

使用ECMAScript6:

那么我们使用TypeScript写呢:

甚至我们为了方便,也可以写成

好了,今天有些晚了,一会还要洗衣服了,今天就说到这里,具体还需要小伙伴们看文档,因为没有什么比文档更权威的。下面是相关的网站,大家可以看一下:

ECMA6:http://www.ecma-international.org/ecma-262/6.0/

Typescript:https://www.typescriptlang.org/

请持续关注我的系列文章,Ionic2开发指南与Angular2开发实战。

针对于ECMA5Script 、ECMAScript6、TypeScript的认识的更多相关文章

  1. 6、什么是TypeScript、TypeScript的安装、转换为.js文件

    1.什么是TypeScript (本人用自己的理解梳理了一下,不代表官方意见) TypeScript:Type+ECMAScript6 TypeScript是一种预处理编程语言,遵循es6标准规范,在 ...

  2. 什么是ECMAScript、什么又是ECMA?

    转载:针对于ECMA5Script .ECMAScript6.TypeScript的认识 什么是ECMAScript.什么又是ECMA? Ecma国际(Ecma International)是一家国际 ...

  3. ECMAScript6 VS TypeScript

    如果你真正使用过Typescript你会发现他其实是javascript的超集, 这是一个非常简洁的描述 ,之所以称之为Typescript,正是Type一词的表述(强类型),可不仅仅是有一个Clas ...

  4. 转职成为TypeScript程序员的参考手册

    写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...

  5. CSS3与页面布局学习总结(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...

  6. CSS3与页面布局学习笔记(七)——前端预处理技术(Less、Sass、CoffeeScript、TypeScript)

    CSS不像其它高级语言一样支持算术运算.变量.流程控制与面向对象特性,所以CSS样式较多时会引起一些问题,如修改复杂,冗余,某些别的语言很简单的功能实现不了等.而javascript则是一种半面向对象 ...

  7. 浅谈TypeScript

    TypeScript为JavaScript的超集(ECMAScript6), 这个语言添加了基于类的面向对象编程.TypeScript作为JavaScript很大的一个语法糖,本质上是类似于css的l ...

  8. TypeScript:类(Classes)

    返回TypeScript手册总目录 传统的Javascript关注的是函数(function)和基于原型(prototype-based)的继承作为构建可重复使用组件的基本方式,但是与更舒服地使用面向 ...

  9. TypeScript学习指南--目录索引

    关于TypeScript: TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程. TypeS ...

随机推荐

  1. HDU2485Destroying the bus stations 拆点网络流求割点个数

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2485 题目要求:删除最少的点,使得源点到汇点的距离大于k 思路:拆点.建图求费用小于等于k的最大流 # ...

  2. CF1029C Maximal Intersection 暴力枚举

    Maximal Intersection time limit per test 3 seconds memory limit per test 256 megabytes input standar ...

  3. 51nod 1257 背包问题 V3(这不是背包问题是二分)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1257 题解:不能按照单位价值贪心,不然连样例都过不了 要求的 ...

  4. CF995B Suit and Tie 贪心 第十三

    Suit and Tie time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  5. Net Core DocXCore 实现word模板导出

    实际工作中,往往有这样的需求,需要导出word,还有各种各样的样式,于是有了word模板导出. 实现以下几个需求: 1.表单导出 2.表格导出 3.表单表格混合导出 4.实际用例测试 解决方案: 实现 ...

  6. java中存储机制堆栈。

    一.java的六种存储地址及解释 1) 寄存器(register):这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配.你不 ...

  7. zookeeper集群部署问题排查记录

    今天在三台虚拟机搭建zookeeper集群,一直连不通,然后进行了几个小时的斗争,做个记录. 具体部署方式网上有很多, 不在赘述.产生连接不同的问题主要有以下几个方面: 1.仔细检查配置文件. 是否有 ...

  8. Navicate for mysql如何导入一个sql文件

    我在做的项目是宜立方商城的项目,现在需要把见表的sql文件导入到navicate中去,步骤如下: ①新建一个数据库,如下: ②在数据库名字上右键,选择运行sql文件 ③选择如下sql文件 ④刷新之后:

  9. GO 语言学习笔记--数组切片篇

    1.对于make 数组切片,长度和容量需要理解清楚: 容量表示底层数组的大小,长度是你可以使用的大小: 容量的用处在哪?在与当你用 appen d扩展长度时,如果新的长度小于容量,不会更换底层数组,否 ...

  10. Spinner列表选择框

    Spinner首先它是一个弹出式的列表选择框,由于间接继承了ViewGroup,所以它可以当做一个容器使用; 如果我们可以明确下拉列表中的列表项, 则可以不需要编写代码, 只需要为spinner指定a ...