JS[Javascript]

JS[Javascript]

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個套用)網頁上使用,用來給HTML網頁增加動態功能。在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行。為了統一規格,因為JavaScript兼容於ECMA標準,因此也稱為ECMAScript。

基本信息

組成部分

javascript組成javascript組成

ECMAScript,描述了該語言的語法和基本對象。

文檔對象模型(DOM),描述處理網頁內容的方法和接口。

瀏覽器對象模型(BOM),描述與瀏覽器進行互動的方法和接口。

基本特點

JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web套用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。

是一種解釋性腳本語言(代碼不進行預編譯)。

主要用來向HTML(標準通用標記語言下的一個套用)頁面添加互動行為。

可以直接嵌入HTML頁面,但寫成單獨的js檔案有利於結構和行為的分離。

跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。

Javascript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程式的基本程式框架。Javascript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變數提供存放信息的地方,表達式則可以完成較複雜的信息處理。

日常用途

嵌入動態文本於HTML頁面。

對瀏覽器事件做出回響。

讀寫HTML元素。

在數據被提交到伺服器之前驗證數據。

檢測訪客的瀏覽器信息。

控制cookies,包括創建和修改等。

基於Node.js技術進行伺服器端編程。

歷史

它最初由Netscape的Brendan Eich設計。JavaScript是甲骨文公司的註冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標準。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,瀏覽器對象模型。

Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規範也借自Java。但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了行銷考慮與Sun微系統達成協定的結果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標準(ECMAScript)。兩者都屬於ECMAScript的實現。儘管JavaScript作為給非程式人員的腳本語言,而非作為給程式人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。

發展初期,JavaScript的標準並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(歐洲計算機製造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作組確定統一標準:ECMA-262。

特性

JavaScript腳本語言具有以下特點:

(1)腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯後執行,而JavaScript是在程式的運行過程中逐行進行解釋。

(2)基於對象。JavaScript是一種基於對象的腳本語言,它不僅可以創建對象,也能使用現有的對象。

(3)簡單。JavaScript語言中採用的是弱類型的變數類型,對使用的數據類型未做出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。

(4)動態性。JavaScript是一種採用事件驅動的腳本語言,它不需要經過Web伺服器就可以對用戶的輸入做出回響。在訪問一個網頁時,滑鼠在網頁中進行滑鼠點擊或上下移、視窗移動等操作JavaScript都可直接對這些事件給出相應的回響。

(5)跨平台性。JavaScript腳本語言不依賴於作業系統,僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫後可以帶到任意機器上使用,前提上機器上的瀏覽器支持JavaScript腳本語言,目前JavaScript已被大多數的瀏覽器所支持。

不同於伺服器端腳本語言,例如PHP與ASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行,不需要伺服器的支持。所以在早期程式設計師比較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。

而隨著伺服器的強壯,雖然程式設計師更喜歡運行於服務端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進行支持。隨著引擎如V8和框架如Node.js的發展,及其事件驅動及異步IO等特性,JavaScript逐漸被用來編寫伺服器端程式。

編程

JavaScript是一種腳本語言,其原始碼在發往客戶端運行之前不需經過編譯,而是將文本格式的字元代碼傳送給瀏覽器由瀏覽器解釋運行。直譯語言的弱點是安全性較差,而且在JavaScript中,如果一條運行不了,那么下面的語言也無法運行。而其解決辦法就是於使用try{}catch(){}︰

1 2 3 4 5 6 7 8 9 10 11 12 13 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語言,以編譯語言編寫的程式在運行之前,必須經過編譯,將代碼編譯為機器碼,再加以運行。

版本

JavaScript已經被Netscape公司提交給ECMA制定為標準,稱之為ECMAScript,標準編號ECMA-262。目前最新版為ECMA-2625thEdition。符合ECMA-2623rdEdition標準的實現有:

Microsoft公司的JScript.

Mozilla的JavaScript-C(C語言實現),現名SpiderMonkey

Mozilla的Rhino(Java實現)

DigitalMars公司的DMDScript

Google公司的V8

WebKit

版本 發布日期 基於 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 1 edition / ECMA-262 2 edition 4.06-4.7x 4.0
1.4 Netscape
Server
1.5 2000年11月 ECMA-262 3 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 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實現。

相關詞條

相關搜尋

熱門詞條