官术网_书友最值得收藏!

1.1 JavaScript概述

首先,我們簡(jiǎn)單介紹一下JavaScript腳本語(yǔ)言的概念、發(fā)展歷史、標(biāo)準(zhǔn)規(guī)范和組成部分等內(nèi)容,為讀者掌握J(rèn)avaScript技術(shù)打好基礎(chǔ)。

1.1.1 JavaScript腳本語(yǔ)言的概念

JavaScript是一種直譯式的腳本語(yǔ)言,是內(nèi)置支持動(dòng)態(tài)類(lèi)型、弱類(lèi)型、基于原型的編程語(yǔ)言。JavaScript既然是直譯式的腳本語(yǔ)言,自然就需要一款解釋器來(lái)執(zhí)行腳本程序。那么什么是解釋器呢?

所謂解釋器,簡(jiǎn)單來(lái)說(shuō)就是在執(zhí)行程序時(shí)、負(fù)責(zé)將程序代碼解釋成機(jī)器語(yǔ)言,然后交由計(jì)算機(jī)操作系統(tǒng)運(yùn)行的程序工具。因此,解釋器本質(zhì)上也是一種計(jì)算機(jī)程序,不過(guò)是負(fù)責(zé)運(yùn)行程序的程序。

讀者若是沒(méi)有清楚地理解解釋器的概念,沒(méi)關(guān)系,筆者再多講一些來(lái)幫助讀者加深理解。其實(shí),與解釋器相對(duì)應(yīng)的是編譯器這個(gè)概念。編譯器的功能是負(fù)責(zé)將程序代碼編譯成機(jī)器語(yǔ)言后、再存儲(chǔ)成一種特定的二進(jìn)制文件(Windows系統(tǒng)也稱(chēng)為可執(zhí)行文件),這樣計(jì)算機(jī)操作系統(tǒng)就可以直接運(yùn)行該程序。例如,讀者所熟知的C語(yǔ)言和Java語(yǔ)言,都是編譯類(lèi)型的程序語(yǔ)言。

理解編譯器與解釋器的區(qū)別,自然也就明白JavaScript直譯式腳本語(yǔ)言解釋器的重要性。因此,設(shè)計(jì)人員就賦予JavaScript解釋器一個(gè)十分高大上的名字——JavaScript引擎。JavaScript引擎是運(yùn)行JavaScript腳本語(yǔ)言的核心。

目前,JavaScript引擎已經(jīng)全部?jī)?nèi)置于主流瀏覽器之中,雖然各個(gè)瀏覽器廠(chǎng)商在功能實(shí)現(xiàn)上各有特點(diǎn),但均是遵循ECMA(歐洲計(jì)算機(jī)制造商協(xié)會(huì))推出的ECMAScript標(biāo)準(zhǔn)開(kāi)發(fā)的,這樣就保證其最大程度的兼容性。例如,Google公司推出的Chrome瀏覽器中所內(nèi)置的V8引擎就是非常有影響力、性能非常強(qiáng)大的JavaScript引擎。

1.1.2 JavaScript發(fā)展歷史

JavaScript的發(fā)展歷史可以說(shuō)是一波三折,下面就簡(jiǎn)單回顧一下。JavaScript最初由Netscape公司(著名的網(wǎng)景公司)的Brendan Eich于1995年設(shè)計(jì)的,而且最初也是在Netscape瀏覽器上設(shè)計(jì)實(shí)現(xiàn)的。

其實(shí),JavaScript最初的名稱(chēng)是LiveScript,不過(guò)由于后來(lái)Netscape公司與Sun公司的合作而將其改名為JavaScript。如果將JavaScript拆開(kāi)來(lái)就是“Java + Script”,而Java語(yǔ)言是Sun公司比較著名的產(chǎn)品之一,這一切都源于JavaScript最初就是受Java啟發(fā)而模仿設(shè)計(jì)的。至今,我們?nèi)钥梢钥吹絁avaScript在語(yǔ)法和命名規(guī)范上都有Java語(yǔ)言的影子,二者確實(shí)有著千絲萬(wàn)縷的淵源。

JavaScript發(fā)展初期并沒(méi)有確立所謂的統(tǒng)一標(biāo)準(zhǔn),而在同期除了JavaScript語(yǔ)言,還有微軟的JScript語(yǔ)言和CEnvi的ScriptEase語(yǔ)言,這三種腳本語(yǔ)言均可以在瀏覽器中運(yùn)行。尤其是JScript語(yǔ)言,就是微軟在看到JavaScript的迅猛勢(shì)頭后,針對(duì)JavaScript而推出的。這一時(shí)期可以說(shuō)是群雄逐鹿,各個(gè)廠(chǎng)商都在加緊研發(fā)自己的產(chǎn)品。

事物的發(fā)展絕大多數(shù)情況總是向著好的方向發(fā)展的。1997年,在ECMA(歐洲計(jì)算機(jī)制造商協(xié)會(huì))的協(xié)調(diào)下,由Netscape、Sun、微軟、Borland組成的工作組確定了統(tǒng)一腳本語(yǔ)言標(biāo)準(zhǔn)ECMA-262,也就是大家所熟知的ECMAScript。

目前,ECMA-262規(guī)范事實(shí)上就是腳本語(yǔ)言的設(shè)計(jì)標(biāo)準(zhǔn),各大瀏覽器廠(chǎng)商在瀏覽器產(chǎn)品上實(shí)現(xiàn)JavaScript功能時(shí),都必須要遵循ECMA-262規(guī)范,這也是出于兼容性考慮。當(dāng)然,在實(shí)現(xiàn)一些瀏覽器特效時(shí)又有各自的特點(diǎn),這也是JavaScript跨平臺(tái)設(shè)計(jì)時(shí)需要設(shè)計(jì)人員需要注意的。

1.1.3 JavaScript的組成

說(shuō)到JavaScript腳本語(yǔ)言的組成,就不得不提到ECMAScript規(guī)范標(biāo)準(zhǔn)了。事實(shí)上,完整的JavaScript腳本語(yǔ)言包含三個(gè)部分(詳見(jiàn)圖1.1):ECMAScript規(guī)范標(biāo)準(zhǔn),瀏覽器對(duì)象模型(BOM),文檔對(duì)象模型(DOM),具體描述如下:

  • ECMAScript:描述JavaScript語(yǔ)言的語(yǔ)法和基本對(duì)象;
  • 瀏覽器對(duì)象模型(BOM):描述JavaScript語(yǔ)言與瀏覽器進(jìn)行交互的方法和接口;
  • 文檔對(duì)象模型(DOM):描述JavaScript語(yǔ)言處理網(wǎng)頁(yè)內(nèi)容的方法和接口。

圖1.1 JavaScript的組成

1.1.4 ECMAScript概述

前文中,我們簡(jiǎn)單介紹了ECMAScript的由來(lái),知道了ECMAScript其實(shí)是一種標(biāo)準(zhǔn)規(guī)范。具體來(lái)講,ECMAScript是由ECMA國(guó)際(前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì),英文全稱(chēng)是European Computer Manufacturers Association)通過(guò)ECMA-262規(guī)范標(biāo)準(zhǔn)化了的腳本程序設(shè)計(jì)語(yǔ)言。而我們所熟知的、用于網(wǎng)頁(yè)設(shè)計(jì)的JavaScript和JScript,實(shí)際上也都是基于ECMA-262標(biāo)準(zhǔn)規(guī)范而擴(kuò)展設(shè)計(jì)的腳本語(yǔ)言。

ECMAScript自誕生至今,已經(jīng)經(jīng)歷了多次重大的版本更新,目前共計(jì)有6個(gè)版本。最新的一個(gè)版本是ECMAScript 6,該版本是ECMA于2015年6月17日正式發(fā)布的,也稱(chēng)為ECMAScript 2015。

ECMAScript標(biāo)準(zhǔn)規(guī)范是由ECMA的第39號(hào)技術(shù)專(zhuān)家委員會(huì)(Technical Committee 39,簡(jiǎn)稱(chēng)TC39)負(fù)責(zé)制訂的,其成員自然包括Google、Microsoft、Mozilla等互聯(lián)網(wǎng)技術(shù)巨頭公司。TC39的職責(zé)就是要保證ECMAScript新版本的基本兼容性,在較大的語(yǔ)法修正及新功能特性增加方面,兼顧老版本的語(yǔ)言支持。

1.1.5 JavaScript的特點(diǎn)

JavaScript實(shí)際上就是一種應(yīng)用于Web客戶(hù)端開(kāi)發(fā)的腳本語(yǔ)言,主要用來(lái)增強(qiáng)網(wǎng)頁(yè)的動(dòng)態(tài)功能,提高用戶(hù)的交互體驗(yàn)。JavaScript腳本語(yǔ)言的主要特點(diǎn)如下:

  • JavaScript是一種解釋性腳本語(yǔ)言(直譯式),需要解釋器來(lái)執(zhí)行,該解釋器也被稱(chēng)為JavaScript引擎;
  • JavaScript腳本語(yǔ)言通常是嵌入在HTML網(wǎng)頁(yè)代碼中來(lái)實(shí)現(xiàn)交互功能的;
  • JavaScript腳本語(yǔ)言具有很友好的跨平臺(tái)特性(如Windows、Linux、Mac、Android、iOS等平臺(tái)),同樣也具有跨瀏覽器特性;
  • JavaScript腳本語(yǔ)言具有非常好的面向?qū)ο蠊δ埽谄溟_(kāi)發(fā)的前端框架十分豐富,功能也十分強(qiáng)大(如ProtoType、jQuery等框架);
  • 隨著JavaScript技術(shù)的不斷發(fā)展,JavaScript開(kāi)發(fā)不單單是應(yīng)用于客戶(hù)端,目前已經(jīng)有用于服務(wù)器端開(kāi)發(fā)的Node.js框架。

與其他編程語(yǔ)言一樣,JavaScript腳本語(yǔ)言支持基本數(shù)據(jù)類(lèi)型、表達(dá)式、算術(shù)運(yùn)算符及基本程序框架。JavaScript腳本語(yǔ)言提供了四種基本的數(shù)據(jù)類(lèi)型和兩種特殊數(shù)據(jù)類(lèi)型用來(lái)處理數(shù)據(jù)和文字,而JavaScript表達(dá)式則可以完成較復(fù)雜的信息處理。

主站蜘蛛池模板: 景宁| 龙海市| 寿阳县| 息烽县| 独山县| 邢台市| 东阿县| 长沙县| 温宿县| 新民市| 乌审旗| 南宁市| 沅陵县| 红安县| 海晏县| 淮安市| 蓝田县| 延津县| 利川市| 沙河市| 原阳县| 鄯善县| 安化县| 伊金霍洛旗| 三门峡市| 广西| 集贤县| 越西县| 阿鲁科尔沁旗| 靖西县| 内江市| 肇庆市| 崇信县| 五河县| 乐昌市| 霍城县| 延庆县| 缙云县| 吉隆县| 文安县| 长乐市|