Java這個(gè)前綴的暗示使得人們總會(huì)把JavaScript和Java聯(lián)系起來,認(rèn)為JavaScript是Java的一個(gè)子集或者是一個(gè)功能差于Java的一個(gè)版本。似乎JavaScript這個(gè)名字就是有意造成一種混淆,而這種混淆帶來了后來的誤解。JavaScript不被解釋成Java,Java就是Java。而JavaScript則是另一種不同的編程語言。
JavaScript的語法和Java相類似,這就像Java和C類似一樣。但是,JavaScript并不是Java的一個(gè)子集就像Java不是C的子集。JavaScript在應(yīng)用程序方面比Java(Oak)當(dāng)初所打算的表現(xiàn)地更好。
JavaScript并不是在Java的誕生地——Sun Microsystems公司,被開發(fā)出來的,而是在Netscape(網(wǎng)景)被開發(fā)出來的。它最初被叫做LiveScript,而這個(gè)名字并沒有讓人們很迷惑。
Script這個(gè)后綴的暗示,說明JavaScript不是一種真正的“編程語言”,作為一門腳本語言和編程語言相比,還是有差距的。但是,這的確是一個(gè)專業(yè)化的問題。和C語言相比,JavaScript通過犧牲性能而換取更加豐富的表達(dá)能力和動(dòng)態(tài)性。
JavaScript的類 C 語法,包括花括號(hào)和笨重的for語句,使得它看起來更像是一種普通的過程式的語言。這是一種誤導(dǎo),因?yàn)楹虲 或 Java相比,JavaScript 和 函數(shù)式語言——比如 Lisp 和 Scheme,有著更多的相似之處。它用數(shù)組代替列表,用對(duì)象代替屬性列表。函數(shù)是第一類型,函數(shù)可以有閉包。你不需要去平衡所有的這些圓括號(hào),就可以使用匿名函數(shù)。
JavaScript最初的設(shè)計(jì)是運(yùn)行在Netscape Navigator上的。它的成功使它事實(shí)上成為了所有網(wǎng)頁瀏覽器的標(biāo)準(zhǔn)配置。這就造成了語言類型的定型。可以說,JavaScript就是編程語言中的 George Reeves(注:美國(guó)演員,因扮演“超人”出名,導(dǎo)致被定型,而無法接演其他角色)。JavaScript也適用于很多和網(wǎng)頁無關(guān)的應(yīng)用程序。
JavaScript的第一個(gè)版本相當(dāng)?shù)娜酢K鄙佼惓L幚怼?nèi)部函數(shù)、繼承。就它現(xiàn)在的形式而言,它已經(jīng)是一門完整的面向?qū)ο蟮木幊陶Z言了。但是,針對(duì)這門語言的很多觀點(diǎn)都是基于它不成熟的形式而引發(fā)的。
負(fù)責(zé)管理這門語言的ECMA委員會(huì)正在開發(fā)擴(kuò)展,這本是出于好意,但是這也加劇了一個(gè)更大的問題:版本變得越來越多。而這造成了更多的困擾。
沒有任何編程語言是完美的。JavaScript也有它本身設(shè)計(jì)錯(cuò)誤,比如重載表示相加和附帶類型轉(zhuǎn)換的串連接兩個(gè)含義,易錯(cuò)的with語句也應(yīng)該避免使用。保留字策略過于嚴(yán)格。分號(hào)的嵌入也是一個(gè)巨大的錯(cuò)誤,正則表達(dá)式的符號(hào)也是一樣。這些錯(cuò)誤會(huì)導(dǎo)致編程錯(cuò)誤,同時(shí)將語言的設(shè)計(jì)作為一個(gè)整體質(zhì)疑。幸運(yùn)地是,這些問題中的很多問題可以用一個(gè)非常不錯(cuò)的 Lint 程序來緩和。
這個(gè)語言的設(shè)計(jì)整體上是相當(dāng)健全的。令人驚訝地是,ECMAScript委員會(huì)似乎對(duì)于糾正這些錯(cuò)誤并不感興趣。也許,他們對(duì)創(chuàng)造一個(gè)新的語言更感興趣吧。(注:這里應(yīng)該是作者的調(diào)侃語)。
JavaScript早期的一些實(shí)現(xiàn)可謂是錯(cuò)誤百出。這一點(diǎn)反映在語言上。更糟糕地是,這些實(shí)現(xiàn)被嵌入到了更加錯(cuò)誤百出的web瀏覽器之中。
幾乎所有關(guān)于JavaScript的書籍都相當(dāng)?shù)卦愀狻K鼈兂錆M了錯(cuò)誤,不恰當(dāng)?shù)睦樱蜎]什么幫助的練習(xí)。這門語言中的重要特性被糟糕地解釋,或者被完全忽略。我修訂過很多關(guān)于JavaScript的書籍,但是我只推薦一本:《JavaScript權(quán)威指南(第五版)》——作者:David Flanagan。(作者語:如果你寫了一本很好的書,請(qǐng)給我郵遞一本贈(zèng)閱本。)
JavaScript的官方規(guī)范是由ECMA出版的。這個(gè)官方規(guī)范的質(zhì)量相當(dāng)?shù)牡汀6译y以閱讀和理解。這是一個(gè)造成拙劣書籍問題的一個(gè)原因,因?yàn)樽髡邆儫o法使用標(biāo)準(zhǔn)文檔來提升他們對(duì)語言的理解。ECMA和TC39委員會(huì)應(yīng)該為此感到深深地窘迫和不安。
很多使用JavaScript的人并不是程序員。他們?nèi)狈I(yè)素質(zhì)和編寫優(yōu)秀程序的訓(xùn)練。無論如何,JavaScript擁有如此強(qiáng)大的表現(xiàn)力,以致于他們通過使用JavaScript可以做很多有意義的事情。這就讓JavaScript背上了一個(gè)名聲,就是說,JavaScript完全是給業(yè)余人員設(shè)計(jì)的語言,它不適合用于專業(yè)編程。其實(shí),事實(shí)并非如此。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:[email protected]