JavaScript

本文回顾了JavaScript的起源,从Netscape Navigator 2.0引入该语言的目的讲起,介绍了JavaScript如何逐渐成为一种广泛使用的脚本语言。文章还讨论了JavaScript与Java之间的区别,并提到了JavaScript在不同开发范式中的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript最初是在Netscape Navigator 2.0版中推出的,目的是为完全静态的Web页面增加动态的效果。正是JavaScript的推出使得Netscape Navigator很长一段时间都是占据统治地位的Web浏览器。后来,M$也在自己的IE 3.0中实现了语法相似的脚本语言,取名叫做JScript。为了统一这两种脚本语言,ECMA后来在ECMA-262规范中定义了ECMAScript语言。ECMAScript就是目前所有浏览器中实现的JavaScript、JScript以及Flash的ActionScript所遵循的共同的国际规范。与ECMA-262规范相对应的ISO规范是ISO-16262,这两个规范是一致的。

这种语言最初被称为LiveScript,只是到最后一刻才被改为JavaScript。JavaScript与XMLHttpRequest一样都是用词不当,它们都太容易让人望文生义了。事实上,JavaScript与Java的相似性仅仅停留在表面的层次,JavaScript更接近于Perl、Python、Ruby这些语言,甚至其与Scheme(一种现代的Lisp语言)、Self这类函数式语言(functional language)的相似性都比与Java的相似性要大。因此,单纯模仿Java的面向对象方式来做JavaScript开发通常都不是一个好主意。

在《JavaScript权威指南》中,David Flanagan写道:

除了句法上有不完全的相似之处,以及都能够提供网页中的可执行内容之外,JavaScript和Java是完全不相干的。相似的名称纯粹是一种行销策略罢了。
武断地认为JavaScript与Java很像,Java的开发方式完全适合于做JavaScript开发,是面向对象程序员的一种天生的傲慢。在《Ajax实战》的附录B:面向对象程序员的JavaScript指南,作者专门用一个附录的篇幅来纠正Java/C#这类面向对象程序员对于JavaScript的误解。用尼采的话来讲就是:
听着!因为我是如此如此的一个人,请看在老天爷的份上,不要把我和任何其他的人混在一起!

Dojo项目的负责人Alex Russell认为JavaScript是有史以来最成功的脚本语言,这种说法有一定的道理。他还说JavaScript就像是一条变色龙:

  • 面向过程语言的开发者(Fortran、C)可以使用面向过程的方式做开发。
  • 面向对象语言的开发者(Java/C#)可以使用OO的方式做开发。
  • 函数式语言的开发者(Scheme、Self)可以使用FP的方式做开发。
可见JavaScript这种语言的灵活。正因为如此,JavaScript经常被误用或者滥用,实际上要用好JavaScript,难度比用好Java大得多。JavaScript语言值得非常深入地去学习,它的优点比起Java来说实在是太多了。

除了运行于浏览器之中的JavaScript以外,JavaScript还可以独立运行,独立运行的JavaScript与Python、Ruby这类脚本语言类似,能够访问宿主机器上的所有资源。Mozilla项目旗下有两个JavaScript引擎,一个使用C语言来实现,叫做 >>SpiderMonkey。还有一个使用Java语言来实现,叫做 >>Rhino。这两个JavaScript引擎都可以独立运行。
此外,运行于移动设备地浏览器之中的WMLScript语言可以看作是JavaScript语言的简化版本。

最新正在制定的规范是:>>ECMAScript 4>>JavaScript 2
等到这两个规范推出后,JavaScript将成为一种足以与Perl、Python和Ruby相抗衡的强大的脚本语言。

附:推荐的JavaScript相关书籍。

  1. 《JavaScript权威指南》,David Flanagan著。
  2. 《Ajax实战》,Dave Crane、Eric Pascarello、Darren James著。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值