【現(xiàn)代JavaScript系列教程】01-JavaScript簡介

來源 | https://zh.javascript.info/intro
以最新的 JavaScript 標準為基準。通過簡單但足夠詳細的內(nèi)容,為你講解從基礎到高階的 JavaScript 相關知識。
JavaScript 簡介
什么是 JavaScript?
V8 —— Chrome 和 Opera 中的 JavaScript 引擎。 SpiderMonkey —— Firefox 中的 JavaScript 引擎。 ……還有其他一些代號,像 “Chakra” 用于 IE,“ChakraCore” 用于 Microsoft Edge,“Nitro” 和 “SquirrelFish” 用于 Safari,等等。
引擎(如果是瀏覽器,則引擎被嵌入在其中)讀取(“解析”)腳本。 然后,引擎將腳本轉(zhuǎn)化(“編譯”)為機器語言。 然后,機器代碼快速地執(zhí)行。
瀏覽器中的 JavaScript 能做什么?
在網(wǎng)頁中添加新的 HTML,修改網(wǎng)頁已有內(nèi)容和網(wǎng)頁的樣式。 響應用戶的行為,響應鼠標的點擊,指針的移動,按鍵的按動。 向遠程服務器發(fā)送網(wǎng)絡請求,下載和上傳文件(所謂的?AJAX?和?COMET?技術)。 獲取或設置 cookie,向訪問者提出問題或發(fā)送消息。 記住客戶端的數(shù)據(jù)(“本地存儲”)。
瀏覽器中的 JavaScript 不能做什么?
網(wǎng)頁中的 JavaScript 不能讀、寫、復制和執(zhí)行硬盤上的任意文件。它沒有直接訪問操作系統(tǒng)的功能。 現(xiàn)代瀏覽器允許 JavaScript 做一些文件相關的操作,但是這個操作是受到限制的。僅當用戶做出特定的行為,JavaScript 才能操作這個文件。例如,用戶把文件“拖放”到瀏覽器中,或者通過??標簽選擇了文件。 有很多與相機/麥克風和其它設備進行交互的方式,但是這些都需要獲得用戶的明確許可。因此,啟用了 JavaScript 的網(wǎng)頁應該不會偷偷地啟動網(wǎng)絡攝像頭觀察你,并把你的信息發(fā)送到?美國國家安全局。 不同的標簽頁/窗口之間通常互不了解。有時候,也會有一些聯(lián)系,例如一個標簽頁通過 JavaScript 打開的另外一個標簽頁。但即使在這種情況下,如果兩個標簽頁打開的不是同一個網(wǎng)站(域名、協(xié)議或者端口任一不相同的網(wǎng)站),它們都不能相互通信。 這就是所謂的“同源策略”。為了解決“同源策略”問題,兩個標簽頁必須?都?包含一些處理這個問題的特定的 JavaScript 代碼,并均允許數(shù)據(jù)交換。本教程會講到這部分相關的知識。 這個限制也是為了用戶的信息安全。例如,用戶打開的 http://anysite.com 網(wǎng)頁必須不能訪問 http://gmail.com(另外一個標簽頁打開的網(wǎng)頁)也不能從那里竊取信息。 JavaScript 可以輕松地通過互聯(lián)網(wǎng)與當前頁面所在的服務器進行通信。但是從其他網(wǎng)站/域的服務器中接收數(shù)據(jù)的能力被削弱了。盡管可以,但是需要來自遠程服務器的明確協(xié)議(在 HTTP header 中)。這也是為了用戶的信息安全。

是什么使得 JavaScript 與眾不同?
與 HTML/CSS 完全集成。 簡單的事,簡單地完成。 被所有的主流瀏覽器支持,并且默認開啟。
JavaScript “上層”語言
CoffeeScript?是 JavaScript 的一種語法糖。它引入了更加簡短的語法,使我們可以編寫更清晰簡潔的代碼。通常,Ruby 開發(fā)者喜歡它。 TypeScript?專注于添加“嚴格的數(shù)據(jù)類型”以簡化開發(fā),以更好地支持復雜系統(tǒng)的開發(fā)。由微軟開發(fā)。 Flow?也添加了數(shù)據(jù)類型,但是以一種不同的方式。由 Facebook 開發(fā)。 Dart?是一門獨立的語言。它擁有自己的引擎,該引擎可以在非瀏覽器環(huán)境中運行(例如手機應用),它也可以被編譯成 JavaScript。由 Google 開發(fā)。 Brython?是一個 Python 的 JavaScript 編譯器,可以在不使用 JavaScript 的情況下,以純 Python 編寫應用程序。
總結(jié)
JavaScript 最開始是專門為瀏覽器設計的一門語言,但是現(xiàn)在也被用于很多其他的環(huán)境。
如今,JavaScript 已經(jīng)成為了與 HTML/CSS 完全集成的,使用最廣泛的瀏覽器語言。
有很多其他的語言可以被“編譯”成 JavaScript,這些語言還提供了更多的功能。建議最好了解一下這些語言,至少在掌握了 JavaScript 之后大致的了解一下。

評論
圖片
表情
