这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战
一、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个设计缺陷
二、TS的诞生
-
由于
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
,只存在于开发人员编程期间,在运行时就会消失。不过在运行的时候,它给你带来的只有好处,没有任何缺点。
思维导图
参考文献
[1].TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!