JavaScript:世界上最被誤解的語言
JavaScript,也叫Mocha,LiveScript,JScript,ECMAScript,是世界上最受歡迎的程式語言之一。事實上,世界上每個人的個人電腦上至少安裝了一種JavaScript的解釋器,並且被廣泛地使用。 JavaScript如此受歡迎的原因在於它在萬維網中所扮演的腳本語言的角色。
名字
Java這個前綴的暗示使得人們總是會把JavaScript和Java連結起來,認為JavaScript是Java的一個子集或者是一個功能差於Java的一個版本。似乎JavaScript這個名字就是有意造成一種混淆,而這種混淆帶來了後來的誤解。 JavaScript不被解釋成Java,Java就是Java。而JavaScript則是另一種不同的程式語言。
JavaScript的語法和Java相類似,這就像Java和C類似一樣。但是,JavaScript並不是Java的一個子集就像Java不是C的子集。 JavaScript在應用程式方面比Java(Oak)當初所打算的表現更好。
JavaScript並不是在Java的誕生地點-Sun Microsystems公司,被開發出來的,而是在Netscape(網景)被開發出來的。它最初被叫做LiveScript,而這個名字並沒有讓人們很迷惑。
Script這個後綴的暗示,說明JavaScript不是一種真正的“程式語言”,作為一門腳本語言和程式語言相比,還是有差距的。但是,這的確是一個專業化的問題。和C語言相比,JavaScript透過犧牲表現而換取更豐富的表達能力和動態性。
披著C 外套的Lisp
JavaScript的類別C 語法,包括花括號和笨重的for語句,使得它看起來更像是一種普通的過程式的語言。這是一種誤導,因為和C 或 Java相比,JavaScript 和 函數式語言——例如 Lisp 和 Scheme,有著更多的相似之處。它用數組代替列表,用物件代替屬性列表。函數是第一個類型,函數可以有閉包。你不需要去平衡所有的這些圓括號,就可以使用匿名函數。
語言類型定型
JavaScript最初的設計是運行在Netscape Navigator上的。它的成功使它事實上成為了所有網頁瀏覽器的標準配置。這就造成了語言類型的定型。可以說,JavaScript就是程式語言中的 George Reeves(註:美國演員,因扮演「超人」而出名,導致被定型,而無法接演其他角色)。 JavaScript也適用於許多和網頁無關的應用程式。
變動的(語言設計)目標
JavaScript的第一個版本相當的弱。它缺少異常處理、內部函數、繼承。就它現在的形式而言,它已經是一門完整的物件導向的程式語言了。但是,針對這門語言的許多觀點都是基於它不成熟的形式而引發的。
負責管理這門語言的ECMA委員會正在開發擴展,這本是出於好意,但這也加劇了一個更大的問題:版本變得越來越多。而這造成了更多的困擾。
設計錯誤
沒有任何程式語言是完美的。 JavaScript也有它本身設計錯誤,例如重載表示相加和附帶類型轉換的字串連接兩個意義,易錯的with語句也應該避免使用。保留字詞策略過於嚴格。分號的嵌入也是一個巨大的錯誤,正規表示式的符號也是一樣。這些錯誤會導致程式設計錯誤,同時將語言的設計視為一個整體質疑。幸運地是,這些問題中的許多問題可以用一個非常好的 Lint 程式來緩和。
這個語言的設計整體上是相當健全的。令人驚訝地是,ECMAScript委員會似乎對於糾正這些錯誤並不感興趣。也許,他們對創造一個新的語言更感興趣吧。 (註:這裡應該是作者的調侃語)。
糟糕的實作
JavaScript早期的一些實作可謂是錯誤百出。這一點反映在語言上。更糟地是,這些實作被嵌入了更錯誤百出的web瀏覽器中。
糟糕的參考書
幾乎所有關於JavaScript的書都相當糟糕。它們充滿了錯誤,不恰當的例子,和沒什麼幫助的練習。這門語言中的重要特性被糟糕地解釋,或被完全忽略。我修訂過很多關於JavaScript的書籍,但我只推薦一本:《JavaScript權威指南(第五版)》——作者:David Flanagan。 (作者語:如果你寫了一本很好的書,請寄一本贈閱本給我。)
#不合格的標準
##JavaScript的官方規範是由ECMA出版的。這個官方規範的品質相當的低。而且難以閱讀和理解。這是一個造成拙劣書籍問題的一個原因,因為作者們無法使用標準文件來提升他們對語言的理解。 ECMA和TC39委員會應該為此感到深深窘迫和不安。業餘
很多使用JavaScript的人並不是程式設計師。他們缺乏專業素質和編寫優秀程式的訓練。無論如何,JavaScript擁有如此強大的表現力,以至於他們透過使用JavaScript可以做很多有意義的事情。這就讓JavaScript背上了一個名聲,就是說,JavaScript完全是為業餘人員設計的語言,它不適合用於專業程式設計。其實,事實並非如此。物件導向
JavaScript是物件導向的嗎?它擁有對象,它的對象可以包含資料和處理資料的方法。物件中可以包含其他的物件。它沒有類,但是它有建構函數,透過建構函數可以做類似類別的操作,包括充當類別變數和方法的容器。它沒有面向類別的繼承,但是它有面向原型的繼承。 建立物件系統的兩個主要方式分別是透過繼承和透過聚合。 JavaScript兩個方法都有,但是它的動態性使得它可以在聚合的基礎上變得更加優秀。 有些論點認為JavaScript不是一門真正的物件導向,因為它不支援(提供)資訊的隱藏。也就是說,物件不能擁有私有變數和私有方法:所有的成員都是公共的。 但又有證明顯示,JavaScript中的物件可以有私有變數和私有方法。 (註:原文中,作者這裡是一個鏈接,介紹關於物件私有變數和私有方法的文檔)當然,很少有人理解這一點,因為JavaScript是世界上最被誤解的程式語言。 (註:作者這裡使用了一種輕鬆的調侃方式)。 有些論點認為JavaScript不是真正的物件導向,因為它不支援繼承。但這又被證明JavaScript不僅能支援傳統的繼承還能應用其它的程式碼重複使用模式。 (註:原文這裡仍然是連結)版權2001年道格拉斯Crockford。版權所有Wrrrldwide。 【推薦課程:Javascript影片教學】
以上是JavaScript:世界上最被誤解的語言的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
