JavaScript的几个基本问题

笔者在《计算机世界》发表《从示例直接学习 JavaScript》一文后,收到不少读者的来信。有的读者由于没有条件上Internet,对一些基本概念的认识比较模糊。这里对几个集中的问题答复如下。

1. JavaScript是一种编程语言吗?

JavaScript是一种紧缩的、基于对象的脚本(Script)描述语言,用于客户端和服务器端 Internet 应用程序的开发。它由Netscape公司开发,在其发行的Netscape Navigator 2.0及以后版本的浏览器中,可解释直接嵌入在 HTML 页面中的 JavaScript 语句。

在 Navigator 的客户端应用程序中,嵌入在 HTML 页面中的 JavaScript 语句能够识别和响应鼠标单击、表单(Form)输入和页面浏览这样的用户事件。例如,可以写一个 JavaScript 函数,来验证用户输入到表单中要求填入电话号码或邮政编码的信息是否合理。不必经过网络传输,嵌有 JavaScript 的 HTML 页面就能够解释输入的文本,并且在输入不正确时用一个消息对话框来提醒用户。又如,可以用 JavaScript 来执行一个动作(如播放一个声音文件、执行一个小应用程序或与一个插件通信),以响应用户打开或已有的页面。

脚本(也译作“样本”等)语言并非Netscape首创,事实上早已有之。这类语言最主要的特性是,一般它不需要编译,程序源码即可由某种应用程序解释执行。JavaScript就是由Netscape浏览器解释执行的(现在Microsoft Internet Explorer也支持JavaScript)。也就是说,理论上讲JavaScript不需要特殊开发环境,用任何普通的文本编辑器即可进行。

2. JavaScript是Java吗?它与Java有何联系和区别?

JavaScript当然不是Java!

不过,JavaScript与Java还是有联系的。JavaScript早先称作Mocha,后来改称LiveScript,Java语言走红后,Netscape引进了Sun的有关概念,将其改名为JavaScript,使JavaScript不仅支持Java 小应用程序,而且向Web作者提供一种嵌入HTML文档进行编程的、基于对象的Script程序设计语言,同时采用的许多结构与Java相似。

JavaScript与Java的主要差异体现为:

JavaScript不是Java的替代语言。

尽管JavaScript有许多与Java相似的结构,但二者的使用背景很不相同。Java是面向计算机程序设计人员提供的语言,对非程序设计人员不易学习掌握;JavaScript是一种脚本(Script)语言,面向非程序设计人员编写Web页、增加编写交互界面灵活性的一种简洁易懂的语言。Navigator 3.0及以后版本的浏览器中,JavaScript可调用嵌在同一HTML文档中的Java 小应用程序,内嵌的Java 小应用程序也可以调用JavaScript。两种语言相互支持、相互补充,而不是相互代替。

JavaScript源代码无须编译。

JavaScript源代码是嵌入HTML文件中的,实际作为Web页的一部分存在。在浏览者使用浏览器浏览具有JavaScript源代码的Web页时,由浏览器本身对该HTML文件进行分析、识别、解释并执行用JavaScript编写的源代码(用户可以使用查看HTML源代码的功能看到JavaScript源代码的存在)。

Java则与之不同。Java的源代码必须进行编译,成为保存在服务器中的代码,通过HTML文档中的<applet>标记,经过HTTP的连接、加载后方能运行。

JavaScript无须特殊开发环境。

由于JavaScript嵌入在HTML文件中,所以它和HTML一样,用一般的文本编辑器就可以进行编辑。

虽然Netscape也推出了Visual JavaScript开发环境,用于JavaScript的开发,但至少是不一定非得用这种环境不可的。

JavaScript与Java语法并不相同。

JavaScript 语言类似 Java,但没有 Java 的静态类型和强类型检查。JavaScript 支持大部分 Java 表达式语法和基本控制流结构。与 Java 通过声明生成类的编译系统不同,JavaScript 支持基于少量数据类型(代表数值、布尔值和字符串值)的运行系统。JavaScript 的对象模型是简单的、基于实例的,但仍然能够提供强大的功能。

JavaScript 也支持函数,同样也不要求特别声明。函数可以是对象的属性,可作为松散类型的方法来执行。

JavaScript 将 Java 小应用程序的有用属性使用到脚本写作中,因而是 Java 的补充。JavaScript 语句可以获得和设置这些属性,以查询小应用程序或插件的状态或者提示其性能。

Java 是一种扩展语言,它是为快速执行和类型安全而特别设计的。不能将 Java 的整数置于对象引用中,也不能通过破坏 Java 的字节代码来获得私用内存,这都体现了 Java 的类型安全性。

Java 程序仅由类及其方法组成。Java 要求声明类、编写方法并确保类型安全,这使得它的编程要比 JavaScript 写作更复杂。Java 的继承和强类型也要求紧密耦合对象层次。

与此相反,JavaScript 本质上是沿袭了 HyperTalk 和 dBASE 这样一些小型动态类型语言。这些脚本描述语言能够对更广泛的用户提供编程工具,因为它们用法简单、内置专用函数、较少要求创建对象。

下表比较了 JavaScript 与 Java 的差异。

JavaScriptJava
由客户端进行解释(而不是编译)。在客户端执行之前,须在服务器上进行编译。
基于对象。代码使用广泛的内置对象,但没有类或继承。面向对象。小应用程序由可继承的对象类组成。
代码与 HTML 集成,内嵌其中。小应用程序与HTML不同(可从HTML 页面中访问)。
变量数据类型不需声明(松散类型)。变量数据类型必须声明(强类型)。
动态绑定。对象引用在运行时检查。静态绑定。对象引用在编译时必须存在。
安全。不能写到硬盘。安全。不能写到硬盘。

3. JavaScript有什么好处?为什么要用JavaScript?

JavaScript具有以下优势。

可节省CGI的交互时间。

随着WWW的迅速发展,Web服务器与浏览者进行交互成为Web服务器的常规任务。这项工作以前一般由CGI实现。由于CGI程序是保存在Web服务器上的程序,与用户的交互过程不仅增大了网络的通信量,也影响了服务器的服务性能。服务器为一个用户运行一个CGI时,需要一个进程为它服务,它要占用服务器的资源(如CPU服务、内存耗费等),如果用户填写时出错,交互服务占用的时间就会相应增加。被访问的热点主机与用户交互越多,服务器的性能影响就越大。

JavaScript是一种基于客户端浏览器的语言,用户在浏览中填表、验证的交互过程只是通过浏览器对调入HTML文档中的JavaScript源代码进行解释执行来完成的,即使是必须调用CGI的部分,浏览器只将用户输入验证后的信息提交给远程的服务器,大大减少了服务器的开销。

可节省浏览者的访问时间和网络流量。

由于用户与主机的交互工作放在了客户浏览器端进行,用户输入的信息在本地就可以得到验证、处理,用户与主机的交互时间减少,网络的通信量相应降低,用户也免除了提交一个无意出错的表格后的等待时间。

可将Java 小应用程序作为处理对象。

由于JavaScript是一种面向对象的语言,一个Web页中的窗口、当前所处的URL地址、浏览资源的历史、文档的属性(如标题、题头、背景色、表格等)都作为对象来处理。同样,Java中的小应用程序小程序也被JavaScript当做对象来引用、控制,Java 小应用程序可以与JavaScript通信,改变一个Web页的构成,具有很大的灵活性。

4. 支持JavaScript的浏览器都有哪些?

毫无疑问,Netscape公司的浏览器支持JavaScript(只要是2.0以上版本)。Microsoft公司为了扩充自己在Internet上的势力,在其免费的浏览器Internet Explorer中(3.0以上版本)也支持JavaScript。其他一些不太知名的浏览器也会与JavaScript保持兼容。 Netscape与Sun推出JavaScript发行版时声称有大约30家公司同意支持这种语言。它们打算将JavaScript提交W3C及IETF组织,作为Internet Script语言标准,将JavaScript作为一种开放的、无版权的标准用于Internet,这意味着任何公司在它们的产品中可以自由地开发使用JavaScript作为其Web客户浏览器。Microsoft公司是除Netscape公司外的首家将JavaScript纳入其浏览器的公司。

X

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注