Javascript和Java的关系

前言

Java和Javascript的关系

经常会有些小白同学会问这样的问题

  • Javascript是java的一种么?
  • Java是不是包含Javascript呢?

这类问题,不仅在国内的知乎问答上,在国外stackoverflow.com上也会出现类似的问题。

那么Java和Javascript到底是什么关系呢?

经典的答案

  • Java and Javascript are similar like Car and Carpet are similar - 来自 stackoverflow.com
  • Java和Javascript的关系就像雷锋和雷峰塔的关系 - 来自知乎

我们可以看到,其实Java和Javascript没有任何关系。你完全可以把它们当做C和Perl来对待。

Javascript的起名

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

当然事实证明,这个效果达到了。

Javascript和Java语言的相同之处

  • 语法和C语言都很相似
  • JavaScript在设计时参照了Java的命名规则

Javascript和Java语言的区别

  • Java是静态语言,而Javascript是动态语言
  • Java是面向对象的,而Jascript是是基于原型的
  • Java的构造函数是特殊的,且只能在对象创建时使用,而JavaScript 的构造函数仅仅是个函数而已。
  • Java要求所有非块语句以分号结尾;JavaScript在要求特定的行末尾插入分号
  • Java使用基于块的作用域;JavaScript使用基于函数的的作用域。
  • Java对于非静态方法和对象有一个隐式作用域和隐式的类作用域,而JavaScript具有隐式全局作用域。

Javascript的特点

  • JavaScript支持闭包,而Java可以使用匿名类模拟某种类型的“闭包”。(Java的未来版本可能支持真正的闭包)
  • 所有JavaScript函数都是可变的,而Java函数只有显式标记时才是可变的
  • JavaScript原型可以在运行时重新定义,并对所有引用的对象立即生效。而Java不能以影响任何现有对象实例的方式重新定义类
  • JavaScript允许对象中的方法独立于其原型被重新定义(想想Ruby中的特征类,但使用了类固醇),而Java对象中的方法被绑定到它的类,并且不能在运行时重新定义。

小结

Java和JavaScript各有所长,Java的舞台在编程领域,而JavaScript的得心之处是在Web页面中,它几乎无所不能。

展开剩余53%