JS 概念蓝图

发布于 6 年前
2 分钟阅读

JavaScript,通常缩写为JS,是一种高级的,解释执行的编程语言。

JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。

它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。

它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。

—— 维基百科


高级语言

编程语言一般分为高级语言,汇编语言,机器语言。机器语言一般是由 0 和1 组成,可被计算机直接理解,但是却难以编写阅读。

后来人们考虑使用助记符,来使得代码更加容易阅读些。例如将 C706 这个移动指令用 mov 表示,等编写完程序后再使用汇编器汇编成机器码。

但是汇编语言不过是使用助记符来使得代码更容易书写阅读。汇编语言编写效率较低,依赖于特定机器。

后来渐渐出现了高级编程语言,早期计算机业主要发展在美国,故一般的高级语言都是以英语为蓝本。高级语言类似于数学定义或自然语言的简洁形式,更接近人们的表达习惯,同时不依赖于特定机器,编写效率也提高了许多。


解释执行

解释执行区别于编译执行的最大一点就是,解释执行的语言最终执行代码是由解释器去完成的。也就是说解释器拥有执行所有操作指令的能力,是全知全能的,再根据输入执行相应的指令。而编译执行是将代码编辑成机器码,最终执行代码是由生成的机器码文件执行。这部分机器码的功能有限,文件也较小。后来出现的 JIT 技术模糊了解释型语言和编译型语言的界限。


基于原型

面向对象三大特征:封装、继承、多态。

作为一门面向对象的语言,JS 也拥有这些特征。JS 在设计的时候借鉴 Self语言,使用基于原型的继承机制。

在基于类的继承中,将类当作实例对象的模版。子类会调用父类构造函数去继承父类中的属性。

基于原型的继承中,原型将代理后代对象的属性方法,当后代对象中查找不到这些属性的时候会继续向上查找。


函数先行

我们常说,函数是 JS 中的”第一公民“。所谓的”第一等公民“就是说 JS 中的函数和基础数据类型拥有同等地位。可以赋值给其它变量,可以当作参数传入另一个函数,也可以当作另一个函数的返回值。


多范式

编程范式指的是一类典型的编程风格,如:函数式编程、面向对象编程、命令式编程等等。JS 中既有函数式编程,又有面向对象编程、命令式编程,所以被称为多范式。


附录:参考

JavaScript——维基百科

高级语言——维基百科

编译原理——中国大学 mooc

解释器——维基百科

解释型语言——维基百科

七周七语言

JavaScript 诞生记——阮一峰

函数式编程初探——阮一峰

编程范式——维基百科

  • 高级语言
  • 解释执行
  • 基于原型
  • 函数先行
  • 多范式
  • 附录:参考