facebook廣告





123

2013年8月3日 星期六

JavaScript客戶端網頁開發的腳本語言介紹

JavaScript,也稱ECMAScript,是一種廣泛用於客戶端網頁開發腳本語言,最早是在HTML上使用的,用來給HTML網頁添加動態功能,然而現在JavaScript也可被用於網路伺服器,如Node.js
發展初期,JavaScript的標準並未確定,同期有網景的JavaScript,微軟的JScript和CEnvi的ScriptEase三足 鼎立。1997年,在ECMA(歐洲電腦製造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作群組確定統一標 準:ECMA-262。
一般來說,完整的JavaScript包括以下幾個部分:
  • ECMAScript,描述了該語言的語法和基本物件
  • 文件物件模型(DOM),描述處理網頁內容的方法和介面
  • 瀏覽器物件模型(BOM),描述與瀏覽器進行互動的方法和介面
它的基本特點如下:
  • 是一種解釋性程式語言(代碼不進行預編譯)。
  • 主要用來向 HTML 頁面添加互動行為
  • 可以直接嵌入 HTML 頁面,但寫成單獨的js檔案有利於結構和行為的分離。
JavaScript常用來完成以下任務:
  • 嵌入動態文字於HTML頁面
  • 對瀏覽器事件作出響應
  • 讀寫HTML元素
  • 在資料被送出到伺服器之前驗證資料
  • 檢測訪客的瀏覽器訊息
  • 控制cookies,包括建立和修改等

歷史

它最初由網景公司Brendan Eich設計,是一種動態、弱型別、基於原型的語言,內建支援型別。JavaScript是甲骨文公司的註冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標準。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實作包含三個部分:ECMAScript文件物件模型瀏覽器物件模型
Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是「看上去像Java」,因此語法上有類似之處,一些名稱和命名規範也借自Java。但JavaScript的主要設計原則源自SelfScheme。JavaScript與Java名稱上的近似,是當時網景為了行銷考慮與昇陽電腦達成協議的結果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲電腦製造商協會)建立了ECMA-262標準(ECMAScript)。現在兩者都屬於ECMAScript的實作。儘管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的程式語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。

常用函式庫

特性

不同於伺服器端腳本語言,例如PHPASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上執行,不需要伺服器的支援。所以在早期程式員比 較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。而隨著伺服器的強壯,雖然現在的程式員更喜歡執行於伺服端的腳 本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端 進行支援。隨著引擎如V8和框架如Node.js的發展,及其事件驅動異步IO等特性,JavaScript逐漸被用來編寫伺服器端程式。

編程

JavaScript是一種腳本語言,其原始碼在發往客戶端執行之前不需經過編譯,而是將文字格式的字元代碼發送給瀏覽器由瀏覽器解釋執行。直譯語言的弱點是安全性較差,而且在JavaScript中,如果一條執行不了,那麼下面的語言也無法執行。而其解決辦法就是於使用try{}catch(){}
console.log("a");    //這是正確的
console.log("b");    //這是正確的
console.logg("c");   //這不是正確的,並會到這裡時停下來
console.log("d");    //這是正確的
console.log("e");    //這是正確的
 
/*解決辦法*/
try{console.log("a");}catch(e){}    //這是正確的
try{console.log("b");}catch(e){}    //這是正確的
try{console.logg("c");}catch(e){}   //這不是正確的,但不會停下來,而是跳過
try{console.log("d");}catch(e){}    //這是正確的
try{console.log("e");}catch(e){}    //這是正確的
Javascript被歸類為直譯語言,因為目前主流的引擎都是每次執行時載入程式碼並解譯。V8是將所有程式碼解譯後再開始執行,其他引擎則是逐行解譯(SpiderMonkey會將解譯過的指令暫存,以提高效能,稱為即時編譯),但由於V8的核心部份多數用Javascript撰寫(而SpiderMonkey是用C++),因此在不同的測試上,兩者效能互有優劣。
與其相對應的是編譯語言,例如C語言,以編譯語言編寫的程式在執行之前,必須經過編譯,將程式碼編譯為機器碼,再加以執行。

Hello World

以下是一個簡單的JavaScript Hello World
<!DOCTYPE HTML>
<html>
    <head>
    <title>簡單的JavaScript Hello World</title>
        <script type="text/javascript">
            document.write("Hello, world!");   // 於瀏覽器視窗內直接顯示
            alert("Hello, world!");            //  於alert裡顯示
            console.log("Hello, world!");      // 於console裡顯示。IE下需要先开启开发工具控制台
        </script>
    </head>
    <body>
HTML 內文……
    </body>
</html>
或是在瀏覽器的網址列(location bar)中使用javascript:,以互動方式表示:
javascript:alert("Hello world!");

版本

JavaScript 已經被 Netscape 公司送出給 ECMA 制定為標準,稱之為 ECMAScript,標準編號 ECMA-262。目前最新版為 ECMA-262 5th Edition[8]。符合 ECMA-262 3rd Edition 標準的實現有:
目前 ECMA-262 4th Edition 正在開發的過程中,與其對應的 JavaScript 的版本為 JavaScript 2.0,目前也正在開發過程中。
版本 發佈日期 基於 Netscape Navigator Mozilla Firefox Internet Explorer Opera Safari Google Chrome
1.0 1996年3月
2.0




1.1 1996年8月
3.0
3.0


1.2 1997年6月
4.0-4.05




1.3 1998年10月 ECMA-262 1st edition / ECMA-262 2nd edition 4.06-4.7x
4.0


1.4

Netscape
Server





1.5 2000年11月 ECMA-262 3rd edition 6.0 1.0 5.5 (JScript 5.5),
6 (JScript 5.6),
7 (JScript 5.7),
8 (JScript 6)
6.0,
7.0,
8.0,
9.0


1.6 2005年11月 1.5 + Array extras + Array and String generics + E4X
1.5

3.0, 3.1
1.7 2006年10月 1.6 + Pythonic generators + Iterators + let
2.0

3.2, 4.0 1.0
1.8 2008年6月 1.7 + Generator expressions + Expression closures
3.0
11.50

1.8.1
1.8 + Native JSON support + Minor Updates
3.5



1.8.2 2009年6月22日 1.8.1 + Minor updates
3.6



1.8.5 2010年7月27日 1.8.1 + ECMAScript 5 Compliance
4 9 11.60


比較

ECMA
版本 說明 實現
ECMA v1 標準化了JavaScript1.1的基本特性,並添加了一些新特性。沒有標準化switch語句和正則表達式。 由Netscape 4.5和IE 4實現。
ECMA v2 ECMA v1的維護版本,只添加了說明。 由Netscape 4.5和IE 4實現。
ECMA v3 標準化了switch語句、異常處理和正則表達式。 由Mozilla、Netscape 6和IE 5.5實現。














   

文章出處:http://zh.wikipedia.org/wiki/JavaScript

沒有留言:

張貼留言