写这篇文章是因为在知乎上看到有人问这个问题,在想怎么会有这种 SB 问题,不过想想当初SB的我貌似也搞不清两者的关系,认知还是需要一个过程。
然后看到比较经典的回答有:Java 和 Javascript 的关系就像雷锋和雷峰塔的关系,也像老婆和老婆饼的关系。
说白了,Java 和 Javascript之间没有半毛钱关系,只是单纯的名字长得像而已。
一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播,说白了,用现在的话来说,就是蹭热度。
它们的相同之处包括:
- 它们的语法和 C 语言都很相似;
- 它们都是面向对象的(虽然实现的方式略有不同);
- JavaScript 在设计时参照了 Java 的命名规则;
它们的不同之处包括:
- JavaScript 是动态类型语言,而 Java 是静态类型语言;
- JavaScript 是弱类型的,Java 属于强类型;
- JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;
JavaScript 除了长得和 Java 比较像之外,语言风格相去甚远。JavaScript 在设计时所参考的对象不包括 Java,而包括了像 Self 和 Scheme 这样的语言。