简介
JavaScript 是编译语言。
对某些计算机语言11来说,在程序12被执行13时,对命令的翻译是自上而下逐行执行的时,称为“代码解释”;对另外一些语言来说,这种翻译是预先进行的,称为“代码编译”。
JavaScript 引擎实际上是动态编译程序,然后立即执行编译后的代码。
11. 计算机语言/语法,指令的格式和组合规则。 ↩12. 程序/源码/代码,一组特定的指令,用来指示计算机要执行哪些任务。源码的一个重要功能是通过清晰的交流表明你的意图。 ↩13. 运行程序,程序被执行的过程。 ↩
JavaScript 不必理解就可使用,因此,通常很难理解语言本身。
像其名称“暗示”的一样,人们通常把JavaScript视为一种脚本语言,因此,理应简单易用。这种思维的一种常见后果是,使用者更注重其实用性,而过度轻视了理解其内涵的重要性。
不理解一种语言而使用它的一个后果是,感觉自己相关的知识极其繁杂,不成体系。因此还会影响进阶以及知识技能的扩展。
设计思路
- 借鉴 C 语言的基本语法;
- 借鉴 Java 语言的数据类型和内存管理;
- 借鉴 Scheme 语言,将函数提升到”第一等公民”(first class)的地位;
- 借鉴 Self 语言,使用基于原型(prototype)的继承机制。
Brendan Eich31的自述
“Java(对JavaScript)的影响,主要是把数据分成基本类型(primitive)和对象类型(object)两种,比如字符串和字符串对象,以及引入了 Y2K 问题。这真是不幸啊。”
“与其说我爱 JavaScript,不如说我恨它。它是 C 语言和 Self 语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:‘它的优秀之处并非原创,它的原创之处并不优秀。’(the part that is good is not original, and the part that is original is not good.)”
31. JavaScript 的创造者。 ↩