"不畏惧,不将就,未来的日子好好努力"——大家好!我是小芝麻😄
# 一、JS的优缺点
上一篇芝麻同学已经花费整整一篇来阐述了JS的产生背景,所以JS的优缺点也不言而喻了。
# 1、JS的优点
- 1)JS是一种具有函数优先的轻量级,解释型或即时编译型的编程语言(代码不进行预编译)。
- 是基于浏览器内核为
html
添加生命力的脚本语言;
- 是基于浏览器内核为
- 2)弱类型脚本语言:(数据类型可以被忽略的语言,一个变量可以赋不同数据类型的值);
- 因为弱类型,所以更加灵活,更易于学习,开发者可以更注重逻辑,不用花费太多时间关心语法的问题;
- 3)跨平台特性:
- 在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
- 4)单线程,事件驱动
- JavaScript对用户的响应,是以事件驱动的方式进行的。在网页(Web Page)中执行了某种操作所产生的动作,被称为“事件”(Event)。例如按下鼠标、移动窗口、选择菜单等都可以被视为事件。当事件发生后,可能会引起相应的事件响应,执行某些对应的脚本,这种机制被称为“事件驱动”。
- 5)安全性:
- JavaScript是一种安全性语言,它不允许访问本地的硬盘,并不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。
# 2、JS的缺点
毕竟开发周期仅有10天,很多设计考虑的不够周到,而且在网景与IE浏览器交锋中诞生,对于老版本的IE浏览器肯定不会很友好。
上面我们罗列了很多JS的优点,这些优点也同样是他的缺点
- 1)JS只有在运行时,才会抛出错误(很容易埋下安全隐患)
- 任何的拼写错误,都不会提示错误;
- 运行时报的错,指向也未必是错误源头;
- 2)因为是弱类型语言,所以维护成本比较大,不适合开发大型程序
- 3)JS 没有类型的概念,声明的变量是动态类型, 虽然灵活易用但不易管理,例如:
- 加号作为运算符,有两个含义,可以表示数字与数字的和,也可以表示字符与字符的连接。
有关详细的JS设计的缺点推荐大家可以看下阮一峰老师的Javascript的10个设计缺陷 (opens new window)
# 二、TS的诞生
既然
JS
有那么多缺点,那为啥不用新语言替换掉他呢?
- 这个问题我们在上一篇已经解释过了,微软曾经试图用
JScript
替换JS
,但最终迫于标准的压力还是选择了放弃
由于
IE
的市场份额被谷歌Chrome
攫取,微软在2015
年使用开源Chakra JavaScript
引擎打造了全新的Edge
浏览器。但是到了这个时候,专注于Web
标准,具备功能强大的V8 JavaScript
引擎的谷歌Chrome
显然已经赢得了浏览器大战。浏览器大战结束了,谷歌构建了
Chrome
,HTML5
也在崛起。谷歌还构建了一个非常高效的JavaScript
引擎,JavaScript
的效率大大提高了。那时,很多开发人员已开始为浏览器构建庞大的
JavaScript
应用程序,逐渐的发现JS
在大型项目上的一些缺点(例如:缺乏诸如模块、类等关键功能。而且,缺乏一种通过程序中的规则来建立秩序的类型系统)
我们还需要使用JS,那有什么能够帮助我们规避JS的缺点呢?
在
TypeScript
出现之前,微软打算将一种称为Script Sharp
的工具转变为产品。但是Hejlsberg
不确定这些开发人员是否愿意用另一种语言编写JavaScript
代码。所以他开始想解决JavaScript
的实际问题 关键是要向语言中添加类型系统,而且还不能影响那些让 JavaScript 如此流行的东西。Hejlsberg 决定建立一个“可擦除类型系统”,这个组件使
TypeScript
成为JavaScript
的超集。在编译时,TypeScript
会删除所有类型并将代码还原回JavaScript
。
从某种意义上说,它是一个 type system
,只存在于开发人员编程期间,在运行时就会消失。不过在运行的时候,它给你带来的只有好处,没有任何缺点。
TypeScript 最初是个微软内部项目,叫 Strada,致力于提升大型 JS 项目。
- 2010 年开始开发,
- 2012 年 10 月发布了第一个开源版本,持续迭代至今
# 思维导图
# 参考文献
[1].TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生 (opens new window)