转载:针对于ECMA5Script 、ECMAScript6、TypeScript的认识

什么是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/

什么是ECMAScript、什么又是ECMA?的更多相关文章

  1. ECMAScript各版本简介及特性

    术语 ECMAScript Sun(现在的Oracle)公司持有着“Java”和“JavaScript”的商标.这就让微软不得不把自己的JavaScript方言称之为“JScript”.然后,在这门语 ...

  2. ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况

    ECMAScript简介: 它是一种由Ecma国际(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范,javascript在它基础上经行了自己的封装.但通常来说,术语ECMAScript和java ...

  3. 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述

    定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...

  4. ECMAScript 6.0

    ES6怎么来的 ECMAScript 和 JavaScript ECMA 是标准,JS 是实现 ECMAScript 简称 ECMA 或 ES 历史版本 1996, ES1.0 Netscape 将 ...

  5. JavaScript深入解读

    JavaScript是运行在浏览器上的脚本语言.我们平时看到丰富多彩的网页,这要在很大程度上归功于JavaScript. 引子 学点儿历史 JavaScript在编程语言的阵营里也是老资格了.它诞生于 ...

  6. 针对于ECMA5Script 、ECMAScript6、TypeScript的认识

    什么是ECMAScript.什么又是ECMA? Ecma国际(Ecma International)是一家国际性会员制度的信息和电信标准组织.1994年之前,名为欧洲计算机制造商协会(European ...

  7. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介

    前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...

  8. 《JavaScript高级程序设计》笔记整理

    欢迎各位指导与讨论 : ) -------------------------待续------------------------------- 本文为笔者在学习时整理的笔记,如有错漏,恳请各位指出, ...

  9. 简述ES5 ES6

    很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...

随机推荐

  1. CF991D Bishwock 第十七 贪心

    Bishwock time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  2. 洛谷 P1219八皇后

    把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...

  3. FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询

    有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上). 巧用AsTable var sql = fsql.Select<UserX>() . ...

  4. 1、单链表的实现(java代码)

    1.创建链结构实体Node /** * 链表结构实体类 */ public class Node { Node next = null; //下一节点 int data; //节点数据 public ...

  5. maven下载jar包源码配置

    两个依赖,就想下mail的源码包,因该怎么 <dependencies> <dependency> <groupId>javax.mail</groupId& ...

  6. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  7. Uva 232 一个换行WA 了四次

    由于UVA OJ上没有Wrong anwser,搞的多花了好长时间去测试程序,之前一直以为改OJ有WA,后来网上一搜才知道没有WA,哎哎浪费了好长时间.此博客用来记录自己的粗心大意. 链接地址:htt ...

  8. django配置静态文件的两种方法

    方法一:按照django配置静态文件的方法,可以在APP应用目录下创建一个static的文件夹,然后在static文件夹下创建一个和APP同名的文件夹,如我有一个blog的django项目,在下面有一 ...

  9. 02:H.264学习笔记

    H.264组成 1.网络提取层 (Network Abstraction Layer,NAL) 2.视讯编码层 (Video Coding Layer,VCL) a.H.264/AVC影像格式阶层架构 ...

  10. 44 (OC)* 野指针、空指针

    一: 空指针 : 没有存储任何内存地址的指针就称为空指针(NULL指针). 被赋值为nil的指针,在没有被具体初始化之前,为nil.nil.Nil.NULL.NSNULL的含义和区别 nil:OC中的 ...