写这篇文章是因为在知乎上看到有人问这个问题 在想怎么会有这种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 这样的语言。