写这篇文章是因为在知乎上看到有人问这个问题,在想怎么会有这种 SB 问题,不过想想当初SB的我貌似也搞不清两者的关系,认知还是需要一个过程。

然后看到比较经典的回答有:Java 和 Javascript 的关系就像雷锋和雷峰塔的关系,也像老婆和老婆饼的关系。

9c32a3e498cb5822f8fb3cd0d07b4a78_m

一般认为,当时 Netscape 之所以将 LiveScript 命名为 JavaScript,是因为 Java 是当时最流行的编程语言,带有 "Java" 的名字有助于这门新生语言的传播。

它们的相同之处包括:

  • 它们的语法和 C 语言都很相似;
  • 它们都是面向对象的(虽然实现的方式略有不同);
  • JavaScript 在设计时参照了 Java 的命名规则;

它们的不同之处包括:

  • JavaScript 是动态类型语言,而 Java 是静态类型语言;
  • JavaScript 是弱类型的,Java 属于强类型;
  • JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

JavaScript 除了长得和 Java 比较像之外,语言风格相去甚远。JavaScript 在设计时所参考的对象不包括 Java,而包括了像 Self 和 Scheme 这样的语言。