JavaScript之语言特性

JavaScript之语言特性



JavaScript是一门在浏览器中运行的脚本语言,最初设计这门语言是用作表单的验证,且与Java并没有什么关系。JS是一门解释性的、动态的、弱类型、单线程、基于原型的面向对象语言。

解释性

高级语言要经过“翻译”才能被机器所执行,“翻译”有编译和解释两种方式。编译是指在程序执行前将代码编译成机器语言文件,且以后运行时无需再次编译,所以编译型语言的程序执行效率高。
而解释性语言则是在程序运行时才进行“翻译”,每次执行都需要重新翻译一次,效率相对较低。

动态性、弱类型

所谓的动态类型语言,是指变量的类型需要在运行时才能确定,反之则是强类型的静态语言,如Java。由于动态性,JS代码的编写极为灵活,但JS也由于动态性而被广为诟病:debug困难、无法编译成二进制文件、性能差等问题。因此也诞生了TypeScript

也正是因为JavaScript是弱类型、解释性的语言,所以浏览器内核在执行JS的时候存在一个重优化的过程,如图:

JavaScript的运行过程

单线程

JS是一种单线程语言,所有任务都在一个线程上完成。因此如果某段JS代码执行耗时较长会导致UI动画卡帧,甚者会使浏览器“无响应”,因为线程一直在跑JS,无暇响应用户的行为。

基于原型的面向对象语言

基于类的面向对象的语言,比如Java 和 C++,是建立在两种截然不同的实体概念上的:类和实例。JavaScript 是一个原形继承的语言,并且不会有这种区别:它只有对象。

基于类和基于原型的对象系统的比较

小结

在很多人眼里,依旧没有把JavaScript当作一门正经的编程语言,上面提到的JavaScript 特性缺点也一直为人诟病。比如知乎上有话题是这样的:
知乎话题:JavaScript的语言设计有哪些缺陷

某回复是这样的:
知乎话题回复:JavaScript的语言设计有哪些缺陷

然而,不管你承认与否,JS正在改变世界。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值