咱們一塊兒來聊一下 JavaScript,用它能作什麼,它有哪些特性,以及一些跟它配合使用的技術。javascript
JavaScript 最初的目的是爲了「賦予網頁生命」。java
這種編程語言咱們稱之爲腳本。它們能夠寫在 HTML 中,在頁面加載的時候會自動執行。typescript
腳本做爲純文本存在和執行。它們不須要特殊的準備或編譯便可運行。編程
這方面,JavaScript 和 Java 有很大的區別。瀏覽器
爲何叫 <u>Java</u>Script?JavaScript 在剛誕生的時候,它的名字叫 「LiveScript」。可是由於當時 Java 很流行,因此決定將一種新語言定位爲 Java 的「弟弟」會有助於它的流行。安全
隨着 JavaScript 的發展,它已經變成了一門獨立的語言,同時也有了本身的語言規範 ECMAScript。如今,它和 Java 之間沒有任何關係。服務器
如今,JavaScript 不只僅是在瀏覽器內執行,也能夠在服務端執行,甚至還能在任意搭載了 JavaScript 引擎 的設備中均可以執行。微信
瀏覽器中嵌入了 JavaScript 引擎,有時也稱做 JavaScript 虛擬機。cookie
不一樣的引擎有不一樣的「代號」,例如:網絡
上面這些名稱很容易記憶,由於常常出如今網上開發者的文章中。咱們也會用到這些名稱。例如:某個新的功能,若是「JavaScript 引擎 V8 是支持的」,那麼咱們能夠認爲這個功能大概能在 Chrome 和 Opera 中正常運行。
引擎是如何工做的?
引擎很複雜,可是基本原理很簡單。
- 引擎(一般嵌入在瀏覽器中)讀取(「解析」)腳本。
- 而後將腳本轉化(「編譯」)爲機器語言。
- 而後這機器語言代碼快速地運行。
引擎會對流程中的每一個階段都進行優化。它甚至能夠在運行時監視編譯的腳本,分析數據流並根據這些對機器代碼應用優化。最後,腳本會執行地很是快。
現代的 JavaScript 是一種「安全」語言。它不提供對內存或 CPU 的底層訪問,由於它最初是爲瀏覽器建立的,不須要這些功能。
JavaScript 的能力很大程度上依賴於它執行的環境。例如:Node.js 容許 JavaScript 讀寫任意文件、執行網絡請求等。
瀏覽器中的 JavaScript 能夠作與網頁操做、用戶交互和 Web 服務器相關的全部事情。
例如,瀏覽器中的 JavaScript 能夠完成下面這些事:
爲了用戶的(信息)安全,在瀏覽器中的 JavaScript 的能力是有限的。這樣主要是爲了阻止邪惡的網站得到或修改用戶的私人數據。
這些限制的例子有:
現代瀏覽器容許 JavaScript 作一些文件相關的操做,可是這個操做是受到限制的。僅當用戶使用某個特定的動做,JavaScript 才能操做這個文件。例如,把文件「拖」到瀏覽器中,或者經過 <input>
標籤選擇文件。
JavaScript 有不少方式和照相機/麥克風或者其餘設備進行交互,可是這些都須要提早得到用戶的受權許可。因此,啓用了 JavaScript 的網頁應該不會偷偷地啓動網絡攝像頭觀察你,並把你的信息發送到美國國家安全局。
這就是「同源策略」。爲了解決「同源策略」問題,兩個標籤頁必須都包含一些處理這個問題的特殊的 JavaScript 代碼,並均容許數據交換,這樣纔可以實現兩個同源標籤頁的數據交換。本教程會講到這部分相關的知識。
這個限制也是爲了用戶的信息安全。例如,用戶打開的 http://anysite.com
網頁的 JavaScript 確定不能訪問 http://gmail.com
(另一個標籤頁打開的網頁)也不能從那裏竊取信息。
瀏覽器環境外的 JavaScript 通常沒有這些限制。例如服務端的 JavaScript 就沒有這些限制。現代瀏覽器還容許安裝可能會要求擴展權限的插件或擴展。
至少有 3 件事值得一提:
+ 和 HTML/CSS 徹底的集成。 + 使用簡單的工具完成簡單的任務。 + 被全部的主流瀏覽器支持,而且默認開啓。
知足這三條的瀏覽器技術也只有 JavaScript 了。
這就是爲何 JavaScript 不同凡響!這也是爲何它是建立瀏覽器界面的最廣泛的工具。
此外,JavaScript 還支持建立服務器,移動端應用程序等。
不一樣的人喜歡不一樣的功能,JavaScript 的語法也不可以知足全部人的需求。
這是正常的,由於每一個人的項目和需求都不同。
因此,最近出現了不少不一樣的語言,這些語言在瀏覽器中執行以前,都會被編譯(轉化)成 JavaScript。
現代化的工具使得編譯速度很是快速且透明,實際上容許開發人員使用另外一種語言編寫代碼並將其自動轉換爲 JavaScript。
這些編程語言的例子有:
還有不少其餘的語言。固然,即便咱們在使用這些語言,咱們也須要知道 JavaScript。由於學習 JavaScript 可讓咱們真正明白咱們本身在作什麼。
現代 JavaScript 教程:開源的現代 JavaScript 入門到進階的優質教程。在線免費閱讀:http://zh.javascript.info/
關注微信公衆號「技術漫談」,訂閱更多精彩內容。