JavaScript 与 Java 是两个公司开发的不同的两个产品。Java 是原 Sun
Microsystems 公司推出的面向对象的程序设计语言,特别适合于互联网应用程序
开发;而 JavaScript 是 Netscape 公司的产品,为了扩展 Netscape 浏览器的功
能而开发的一种可以嵌入 Web 页面中运行的基于对象和事件驱动的解释性语言。
JavaScript 的前身是 LiveScript;而 Java 的前身是 Oak 语言。
下面对两种语言间的异同作如下比较:
基于对象和面向对象:Java 是一种真正的面向对象的语言,即使是开发
简单的程序,必须设计对象;JavaScript 是种脚本语言,它可以用来制作与网络
无关的,与用户交互作用的复杂软件。它是一种基于对象(Object-Based)和第 253 页 共 485 页
事件驱动(Event-Driven)的编程语言,因而它本身提供了非常丰富的内部对
象供设计人员使用。
解释和编译:Java 的源代码在执行之前,必须经过编译。JavaScript 是
一种解释性编程语言,其源代码不需经过编译,由浏览器解释执行。(目前的浏
览器几乎都使用了 JIT(即时编译)技术来提升 JavaScript 的运行效率)
强类型变量和类型弱变量:Java 采用强类型变量检查,即所有变量在编
译之前必须作声明;JavaScript 中变量是弱类型的,甚至在使用变量前可以不作
声明,JavaScript 的解释器在运行时检查推断其数据类型。
代码格式不一样。
补充:上面列出的四点是网上流传的所谓的标准答案。其实 Java 和 JavaScript
最重要的区别是一个是静态语言,一个是动态语言。目前的编程语言的发展趋势
是函数式语言和动态语言。在 Java 中类(class)是一等公民,而 JavaScript 中
函数(function)是一等公民,因此 JavaScript 支持函数式编程,可以使用 Lambda
函数和闭包(closure),当然 Java 8 也开始支持函数式编程,提供了对 Lambda
表达式以及函数式接口的支持。对于这类问题,在面试的时候最好还是用自己的
语言回答会更加靠谱,不要背网上所谓的标准答案。