JavaScript 是一种属于网络的脚本语言, 已经被广泛用于 web 应用开发, 常用来为网页添加各式各样的动态功能, 为用户提供更流畅美观的浏览效果. 可以直接嵌入 html 页面, 但写成单独的 JS 文件有利于结构和行为的分离.
JavaScript 诞生
了解一门语言的诞生, 其作者, 和诞生的原因, 我们才能比较深刻的了解一门的特性, 才能很好的明白为什么今天的 JavaScript 是这个样子. 据说 JavaScript 的作者 Brendan Eich(布兰登. 艾奇)只花了十天的时间就把这门语言设计出来了.
下面我们来看看其真其诞生的原因, 及其特性
1994 年, 网景公司 (Netscape) 发布了 Navigator 浏览器 0.9 版, 这是世界上第一款比较成熟的网络浏览器, 轰动一时. 但是这是一款名副其实的浏览器 - 只能浏览页面, 浏览器无法与用户互动. 比如你登录一个网站输入完用户名点击提交的时候. 浏览器并不知道你是否输入了, 也无法判断. 只能传给服务器去判断.
网景急于解决浏览器与用户交互这个问题. 当时解决这个问题有两个办法, 一个是采用现有的语言, 比如 Perl,Python,Tcl,Scheme 等等, 允许它们直接嵌入网页. 另一个是发明一种全新的语言.
这两个选择各有利弊. 第一个选择, 有利于充分利用现有代码和程序员资源, 推广起来比较容易; 第二个选择, 有利于开发出完全适用的语言, 实现起来比较容易. 到底采用哪一个选择, 网景公司内部争执不下, 管理层一时难以下定决心.
就在这时发生了一件大事, 1995 年 Sun 公司将 Oak 语言改名为 Java, 正式向市场推出. Sun 公司大肆宣传, 许诺这种语言可以 "一次编写, 到处运行"(Write Once, Run Anywhere), 它看上去很可能成为未来的主宰.
网景公司动了心, 决定与 Sun 公司结成联盟. 它不仅允许 Java 程序以 applet(小程序)的形式, 直接在浏览器中运行; 甚至还考虑直接将 Java 作为脚本语言嵌入网页, 只是因为这样会使 HTML 网页过于复杂, 后来才不得不放弃.
总之, 当时的形势就是, 网景公司的整个管理层, 都是 Java 语言的信徒, Sun 公司完全介入网页脚本语言的决策. 因此, JavaScript 后来就是网景和 Sun 两家公司一起携手推向市场的, 这种语言被命名为 "Java+script" 并不是偶然的.
此时, 34 岁的系统程序员 Brendan Eich 登场了. 1995 年 4 月, 网景公司录用了他.
Brendan Eich 的主要方向和兴趣是函数式编程, 网景公司招聘他的目的, 是研究将 Scheme 语言作为网页脚本语言的可能性. Brendan Eich 本人也是这样想的, 以为进入新公司后, 会主要与 Scheme 语言打交道仅仅一个月之后, 1995 年 5 月, 网景公司做出决策, 未来的网页脚本语言必须 "看上去与 Java 足够相似", 但是比 Java 简单, 使得非专业的 网页作者也能很快上手. 这个决策实际上将 Perl,Python,Tcl,Scheme 等非面向对象编程的语言都排除在外了. Brendan Eich 被指定为这种 "简化版 Java 语言" 的设计师.
但是, 他对 Java 一点兴趣也没有. 为了应付公司安排的任务, 他只用 10 天时间就把 JavaScript 设计出来了. 由于设计时间太短, 语言的一些细节考虑得不够严谨, 导致后来很长一段时间, JavaScript 写出来的程序混乱不堪. 如果 Brendan Eich 预见到, 未来这种语言会成为互联网第一大语言, 全世界有几百万学习者, 他会不会多花一点时间呢?
总的来说, 他的设计思路是这样的:
(1)借鉴 C 语言的基本语法;
(2)借鉴 Java 语言的数据类型和内存管理;
(3)借鉴 Scheme 语言, 将函数提升到 "第一等公民"(first class)的地位;
(4)借鉴 Self 语言, 使用基于原型 (prototype) 的继承机制.
所以, JavaScript 语言实际上是两种语言风格的混合产物 ----(简化的)函数式编程 +(简化的)面向对象编程. 这是由 Brendan Eich(函数式编程)与网景公司 (面向对象编程) 共同决定的.
如果不是公司的决策, Brendan Eich 绝不可能把 Java 作为 JavaScript 设计的原型. 作为设计者, 他一点也不喜欢自己的这个作品:
"与其说我爱 Javascript, 不如说我恨它. 它是 C 语言和 Self 语言一夜情的产物. 十八世纪英国文学家约翰逊博士说得好:'它的优秀之 处并非原创, 它的原创之处并不优秀.'(the part that is good is not original, and the part that is original is not good.)"
部分内容来参考百度百科 Brendan Eich https://baike.baidu.com/item/Brendan Eich
更多 Web 前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/javascript/17316.html