1-1 I巹S

JavaScript 早期是由 Netscape Communications 公司所開發的一種解譯式程式語言,專門用在網頁中,並在用戶端的電腦執行,以提高網頁的互動性為主要目標。早期的瀏覽器,例如 Netscape,也只有支援 JavaScript 為主要的客戶端網頁程式語言。而近期的微軟瀏覽器 IE,則可以支援兩種程式語言,包含 JavaScript 和 VBScript,但是 JavaScript 還是網頁內訂預設的客戶端程式語言。因此只有 JavaScript 能夠同時適用於各大瀏覽器,如 IE、FireFox 和 Chrome 等。

Hint
可以使用 Google Fight 來讓 JavaScript 和 VBScript 單挑一下!

JavaScript 開始是內嵌於網頁的程式語言,但由於其易學易用,又很接近於一般的 C 和 C++ 語言,所以受到很大歡迎。微軟有鑑於此,又將此語言擴充到其他平台,如 IIS(Internet Information Server,微軟的網頁伺服器)的 ASP(Active Server Pages)和單機可執行的 WSH(Window Scripting Hosts)。因此,JavaScript 可發揮的平台可以說是越來越多,可以列舉如下:

由於篇幅有限,本篇教材對於 JavaScript 的介紹,僅限於在用戶端網頁的應用,至於在伺服器端及在單機方面的使用,可參考本書的另外兩篇。因此以下的介紹,均只限於內嵌於用戶端網頁的程式設計與應用。

基本上來說,只要是 Netscape 2.0 以上,或是 Explorer 3.0 以上,都可以支援 JavaScript,但是這兩種瀏覽器支援的程度並不完全相同。事實上 IE 所支援的版本是 JScript,這是微軟本身所發展出來的 JavaScript 版本,和 Netscape 的 JavaScript 雖有小異之處,但其特性及語法仍大致相同,因此在本書中,我們暫時可將 JavaScript 與 JScript 視為同一種語言。無論是 JavaScript 或是 JScript,都滿足 ECMA(European Computer Manufacturer's Association,歐洲電腦製造商協會)所提出來的標準,滿足此標準的語言稱為 ECMAScript,當初 Netscape 和微軟也都有參與此語言的制訂。

Hint
有關於 ECMA 所制訂的各項電腦相關標準,讀者可以參考 ECMA 的標準規範網頁: "http://www.ecma-international.org/publications/standards/stnindex.htm",其中也包含了對於 ECMAScript 的規範文件。

JavaScript 在網頁程式設計的主要功能可列舉如下:

JavaScript 語言可以產生各種不同的物件,以及與物件相關的方法與性質,因此此語言可以說是「物件基礎」(Object-based)的程式語言,但並不是「物件導向」(Object-oriented),因為它在物件方面的功能並沒有像 C++ 那麼完全。此外,JavaScript 屬於底稿式語言(Scripting Language),相關的特性可以列表說明如下:

其他和 JavaScript 功能相近的用戶端程式語言,可列舉如下:

當 Netscape 在發展 JavaSript 時,Sun Microsystems 公司也正在發展客戶端的程式語言 Java。原先 JavaScript 本名叫做 LiveScript,後來Sun Microsystems 公司研發的 Java 程式語言似乎有一飛沖天之勢,Netscape 乃順天應人,順勢將 LiveScript 改名為 JavaScript。常常有人把 JavaScript 和 Java 混為一談,事實上這兩者除了名字相近外,並無其他關係。以下是一個 JavaScript 和 Java Applets 的比較表,列出兩者相同和相異之處。(如果你是初學者,看不懂此表,也沒有關係,因為這並不影響對後續教材的學習。)

JavaScript Java Applets
由客戶端的 JavaScript 解譯器進行逐列解譯後執行。 由伺服器取得編譯後的 Bytecode,然後在客戶端由 Java Virtual Machine 執行。
物件基礎(Object-based)的語言,繼承(Inheritance)關係必須經由特殊方式才能達成,性質及方法可以動態地加到一個物件。 物件導向(Object-oriented)的語言,物件可分為類別(Classes)及實例(Instances),繼承關係來自於物件的階層性。類別及實例都無法具有動態產生的性質及方法。
程式碼內嵌於 HTML 網頁之中。 以特殊標籤來將 Java Applets 加入網頁之中。
所有變數不需要事先宣告資料型態,即可逕行指定變數值。 所有變數都必須事先宣告資料型態。
在執行程式碼時,才會檢查所到的物件是否存在。 在編譯程式碼時,即會檢查所用的物件是否存在。
無法讀寫客戶端的硬碟(Cookies 除外)。 無法讀寫客戶端的硬碟。


JavaScript 程式設計與應用:用於網頁用戶端