最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

JavaScript:世界上誤解最深的語(yǔ)言

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:31:23
文檔

JavaScript:世界上誤解最深的語(yǔ)言

JavaScript:世界上誤解最深的語(yǔ)言:JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的編程語(yǔ)言之一。事實(shí)上世界上的每一臺(tái)個(gè)人電腦都安裝并在頻繁使用至少一個(gè)JavaScript解釋器。JavaScript的流行完全是由于他在WWW腳本語(yǔ)言領(lǐng)
推薦度:
導(dǎo)讀JavaScript:世界上誤解最深的語(yǔ)言:JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的編程語(yǔ)言之一。事實(shí)上世界上的每一臺(tái)個(gè)人電腦都安裝并在頻繁使用至少一個(gè)JavaScript解釋器。JavaScript的流行完全是由于他在WWW腳本語(yǔ)言領(lǐng)
 JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的編程語(yǔ)言之一。事實(shí)上世界上的每一臺(tái)個(gè)人電腦都安裝并在頻繁使用至少一個(gè)JavaScript解釋器。JavaScript的流行完全是由于他在WWW腳本語(yǔ)言領(lǐng)域中的地位決定的。

2059.jpg

  盡管它很流行,但是很少有人知道JavaScript是一個(gè)非常棒的動(dòng)態(tài)面向?qū)ο笸ㄓ镁幊陶Z(yǔ)言。這居然能成為一個(gè)秘密!這門語(yǔ)言為什么被誤解如此之深?

  名字

  Java- 前綴很容易使人聯(lián)想到Java,并認(rèn)為它是Java的子集或簡(jiǎn)化版的Java??雌饋?lái)最初給它選這個(gè)名字是別有用心的,是故意混淆概念、故意制造"誤解"的。JavaScript不是解釋執(zhí)行的Java。Java是解釋執(zhí)行的Java。JavaScript是另外一種語(yǔ)言。

  JavaScript的語(yǔ)法和Java有相似之處,這就像Java的語(yǔ)法和C很相像一樣。但是它不是Java的子集,就像Java不是C的子集一樣。它在Java(Oak)最初打算進(jìn)軍的領(lǐng)域中比Java更好。

  JavaScript不是Sun Microsystems的產(chǎn)品,Sun是Java的家。JavaScript是在Netscape被開(kāi)發(fā)出來(lái)的。它最初叫LiveScript,嗯……還是這個(gè)名字好。

  -Script后綴讓人認(rèn)為他不是一門真正的編程語(yǔ)言,和一門"編程語(yǔ)言"還有相當(dāng)?shù)牟罹唷5沁@只是應(yīng)用領(lǐng)域的問(wèn)題。和C相比,JavaScript是犧牲了性能但換來(lái)了豐富的表現(xiàn)力和靈活的形態(tài)。

  披著C皮的Lisp

  JavaScript的類C語(yǔ)法,包括大括號(hào)和語(yǔ)句的形式,讓它看起來(lái)像普通的面向過(guò)程編程語(yǔ)言。這是一種誤解,因?yàn)镴avaScript和函數(shù)式語(yǔ)言,比如 Lisp 或 Scheme,有更多的相似之處,而不是和C或Java。它使用數(shù)組而不是列表,使用對(duì)象而不是屬性列表。函數(shù)是第一位的,它有閉包(closures 怎么翻譯??),另外你還可以使用lambda表達(dá)式。

  類型轉(zhuǎn)換

  JavaScript最初被設(shè)計(jì)成在Netscape Navigator中運(yùn)行,它在Navigator中的成功引領(lǐng)它成為事實(shí)上所有web瀏覽器的標(biāo)準(zhǔn)裝備。這就造就了"類型轉(zhuǎn)換"。JavaScript是編程語(yǔ)言中的 George Reeves(超人),是大量非web程序的稱職之選。

  移動(dòng)靶

  JavaScript的最初幾版非常弱,沒(méi)有異常處理,沒(méi)有內(nèi)部函數(shù)和繼承。現(xiàn)如今,它已經(jīng)成為完全面向?qū)ο蟮木幊陶Z(yǔ)言。但是這門語(yǔ)言的許多思想是基于它不成熟的形式的。

  ECMA委員會(huì),這門語(yǔ)言的管家,正在對(duì)它進(jìn)行擴(kuò)展,也在蓄意惡化它最大的問(wèn)題:有太多的版本。這是混亂的根源。

  設(shè)計(jì)上的錯(cuò)誤

  沒(méi)有什么編程語(yǔ)言是完美的。JavaScript也有它設(shè)計(jì)上的錯(cuò)誤,比如重載的+號(hào)隨著類型的不同既表示"相加"又表示"連接",和本該避免的有錯(cuò)誤傾向的 with 語(yǔ)句。它的保留字策略過(guò)于嚴(yán)格。分號(hào)的插入是一個(gè)巨大的錯(cuò)誤,比如作為字面正則表達(dá)式的符號(hào)時(shí)。這些失誤已直接導(dǎo)致編程中的錯(cuò)誤,也使這門語(yǔ)言的整體設(shè)計(jì)遭人質(zhì)疑。還好,這些問(wèn)題中有許多都可以在良好的 lint 程序中得以緩解。

  這門語(yǔ)言的整體設(shè)計(jì)(上的問(wèn)題)是相當(dāng)明顯的。奇怪的是ECMAScript委員會(huì)并沒(méi)有對(duì)修正其中存在的問(wèn)題表現(xiàn)出太大的興趣,也許他們更熱衷于制造新的問(wèn)題。

  糟糕的實(shí)現(xiàn)

  JavaScript的一些早期實(shí)現(xiàn)有許多bug,這反過(guò)來(lái)對(duì)語(yǔ)言本身產(chǎn)生了很壞的影響。更糟糕的是這些滿是bug的實(shí)現(xiàn)是嵌入在滿是bug的web瀏覽器中的。

  糟糕的書

  幾乎所有的JavaScript書都是相當(dāng)可怕的。它們包含錯(cuò)誤,包含不好的例子,并鼓勵(lì)不好的做法。JavaScript語(yǔ)言的一些重要特性它們要么沒(méi)有解釋清楚,要么根本就沒(méi)有提及。我看過(guò)很多JavaScript的書,但我只能推薦一本:David Flanagan著的 JavaScript: The Definitive Guide (4th Edition) (《JavaScript權(quán)威指南 第四版》)。(作者們請(qǐng)注意:如果你們寫出了好書請(qǐng)發(fā)給我一份副本,我給你們校對(duì)。)

  “準(zhǔn)標(biāo)準(zhǔn)”的標(biāo)準(zhǔn)

  ECMA公布的官方語(yǔ)言規(guī)范的質(zhì)量極其的差。不僅難讀而且極其難懂。它可為那些"糟糕的書"做出了不小的貢獻(xiàn),因?yàn)槟切┳髡邿o(wú)法通過(guò)這個(gè)標(biāo)準(zhǔn)文檔來(lái)更深地理解這門語(yǔ)言。ECMA和TC39應(yīng)該為此感到非常尷尬。

  業(yè)余者

  使用JavaScript的人大多不是程序員,他們?nèi)鄙賹懥己贸绦虻呐嘤?xùn)和訓(xùn)練。JavaScript有非常強(qiáng)大的表現(xiàn)力,不管怎樣他們也能使用它做有用的事情。這給了JavaScript一個(gè)”全然適合業(yè)余愛(ài)好者而不適合專業(yè)程序員“的名聲。這很明顯是一個(gè)錯(cuò)誤。

  面向?qū)ο?/p>

  JavaScript是面向?qū)ο蟮膯幔克袑?duì)象,它的對(duì)象可以包含數(shù)據(jù)以及對(duì)數(shù)據(jù)進(jìn)行操作的方法,對(duì)象也可以包含其他的對(duì)象。它沒(méi)有類,但是它有構(gòu)造函數(shù)來(lái)做類的事情,包括聲明類的變量和方法。它沒(méi)有面向類的繼承,但是他有面向原型的繼承。

  構(gòu)建對(duì)象系統(tǒng)的兩大主要方法是繼承(is-a)和聚合(has-a)。這兩者JavaScript都有,但是它的動(dòng)態(tài)天性允許有比聚合更好的實(shí)現(xiàn)方式。

  一些關(guān)于JavaScript不是真的面向?qū)ο蟮臓?zhēng)論其理由是它沒(méi)有提供信息隱藏。也就是說(shuō)JavaScript的對(duì)象沒(méi)有私有變量和私有方法:它的所有成員都是公開(kāi)的。

  但是事實(shí)是JavaScript 的對(duì)象可以有私有變量和私有方法(點(diǎn)擊這里來(lái)看如何實(shí)現(xiàn))。當(dāng)然,之所以很少有人知道這個(gè)是因?yàn)镴avaScript是世界上誤解最深的語(yǔ)言嘛。

  另一些關(guān)于JavaScript不是真的面向?qū)ο蟮臓?zhēng)論其理由是它沒(méi)有提供繼承。但是事實(shí)是JavaScript不但支持經(jīng)典的繼承,而且支持其他一些代碼重用的模式。

  翻譯:袁曉輝 原文鏈接: http://www.crockford.com/javascript/javascript.html

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript:世界上誤解最深的語(yǔ)言

JavaScript:世界上誤解最深的語(yǔ)言:JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的編程語(yǔ)言之一。事實(shí)上世界上的每一臺(tái)個(gè)人電腦都安裝并在頻繁使用至少一個(gè)JavaScript解釋器。JavaScript的流行完全是由于他在WWW腳本語(yǔ)言領(lǐng)
推薦度:
標(biāo)簽: 語(yǔ)言 誤解 javascript
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top