JavaScript-導論

說明:此類博客來自如下連接,對原內容作了標註重點知識,此處僅供本身學習參考!

來源:https://wangdoc.com/javascript/basic/introduction.htmljavascript

1.什麼是JavaScript語言?

JavaScript 是一種輕量級的腳本語言。所謂「腳本語言」(script language),指的是它不具有開發操做系統的能力,而是隻用來編寫控制其餘大型應用程序(好比瀏覽器)的「腳本」。html

JavaScript 也是一種嵌入式(embedded)語言。它自己提供的核心語法不算不少,只能用來作一些數學和邏輯運算。JavaScript 自己不提供任何與 I/O(輸入/輸出)相關的 API,都要靠宿主環境(host)提供,因此 JavaScript 只合適嵌入更大型的應用程序環境,去調用宿主環境提供的底層 API。java

目前,已經嵌入 JavaScript 的宿主環境有多種,最多見的環境就是瀏覽器,另外還有服務器環境,也就是 Node 項目。git

從語法角度看,JavaScript 語言是一種「對象模型」語言。各類宿主環境經過這個模型,描述本身的功能和操做接口,從而經過 JavaScript 控制這些功能。可是,JavaScript 並非純粹的「面嚮對象語言」,還支持其餘編程範式(好比函數式編程)。這致使幾乎任何一個問題,JavaScript 都有多種解決方法。閱讀本書的過程當中,你會詫異於 JavaScript 語法的靈活性。程序員

JavaScript 的核心語法部分至關精簡,只包括兩個部分:基本的語法構造(好比操做符、控制結構、語句)和標準庫(就是一系列具備各類功能的對象好比ArrayDateMath等)。除此以外,各類宿主環境提供額外的 API(即只能在該環境使用的接口),以便 JavaScript 調用。以瀏覽器爲例,它提供的額外 API 能夠分紅三大類。es6

  • 瀏覽器控制類:操做瀏覽器
  • DOM 類:操做網頁的各類元素
  • Web 類:實現互聯網的各類功能

若是宿主環境是服務器,則會提供各類操做系統的 API,好比文件操做 API、網絡通訊 API等等。這些你均可以在 Node 環境中找到。github

本書主要介紹 JavaScript 核心語法和瀏覽器網頁開發的基本知識,不涉及 Node。全書能夠分紅如下四大部分。chrome

  • 基本語法
  • 標準庫
  • 瀏覽器 API
  • DOM

JavaScript 語言有多個版本。本書的內容主要基於 ECMAScript 5.1 版本,這是學習 JavaScript 語法的基礎。ES6 和更新的語法請參考我寫的《ECMAScript 6入門》數據庫

2.爲何學習 JavaScript?

JavaScript 語言有一些顯著特色,使得它很是值得學習。它既適合做爲學習編程的入門語言,也適合看成平常開發的工做語言。它是目前最有但願、前途最光明的計算機語言之一。編程

2.1操控瀏覽器的能力

JavaScript 的發明目的,就是做爲瀏覽器的內置腳本語言,爲網頁開發者提供操控瀏覽器的能力。它是目前惟一一種通用的瀏覽器腳本語言,全部瀏覽器都支持。它可讓網頁呈現各類特殊效果,爲用戶提供良好的互動體驗。

目前,全世界幾乎全部網頁都使用 JavaScript。若是不用,網站的易用性和使用效率將大打折扣,沒法成爲操做便利、對用戶友好的網站。

對於一個互聯網開發者來講,若是你想提供漂亮的網頁、令用戶滿意的上網體驗、各類基於瀏覽器的便捷功能、先後端之間緊密高效的聯繫,JavaScript 是必不可少的工具。

2.2普遍的使用領域

近年來,JavaScript 的使用範圍,慢慢超越了瀏覽器,正在向通用的系統語言發展。

(1)瀏覽器的平臺化

隨着 HTML5 的出現,瀏覽器自己的功能愈來愈強,再也不僅僅能瀏覽網頁,而是愈來愈像一個平臺,JavaScript 所以得以調用許多系統功能,好比操做本地文件、操做圖片、調用攝像頭和麥克風等等。這使得 JavaScript 能夠完成許多之前沒法想象的事情。

(2)Node

Node 項目使得 JavaScript 能夠用於開發服務器端的大型項目,網站的先後端都用 JavaScript 開發已經成爲了現實。有些嵌入式平臺(Raspberry Pi)可以安裝 Node,因而 JavaScript 就能爲這些平臺開發應用程序。

(3)數據庫操做

JavaScript 甚至也能夠用來操做數據庫。NoSQL 數據庫這個概念,自己就是在 JSON(JavaScript Object Notation)格式的基礎上誕生的,大部分 NoSQL 數據庫容許 JavaScript 直接操做。基於 SQL 語言的開源數據庫 PostgreSQL 支持 JavaScript 做爲操做語言,能夠部分取代 SQL 查詢語言。

(4)移動平臺開發

JavaScript 也正在成爲手機應用的開發語言。通常來講,安卓平臺使用 Java 語言開發,iOS 平臺使用 Objective-C 或 Swift 語言開發。許多人正在努力,讓 JavaScript 成爲各個平臺的通用開發語言。

PhoneGap 項目就是將 JavaScript 和 HTML5 打包在一個容器之中,使得它能同時在 iOS 和安卓上運行。Facebook 公司的 React Native 項目則是將 JavaScript 寫的組件,編譯成原生組件,從而使它們具有優秀的性能。

Mozilla 基金會的手機操做系統 Firefox OS,更是直接將 JavaScript 做爲操做系統的平臺語言,可是很惋惜這個項目沒有成功。

(5)內嵌腳本語言

愈來愈多的應用程序,將 JavaScript 做爲內嵌的腳本語言,好比 Adobe 公司的著名 PDF 閱讀器 Acrobat、Linux 桌面環境 GNOME 3。

(6)跨平臺的桌面應用程序

Chromium OS、Windows 8 等操做系統直接支持 JavaScript 編寫應用程序。Mozilla 的 Open Web Apps 項目、Google 的 Chrome App 項目、Github 的 Electron 項目、以及 TideSDK 項目,均可以用來編寫運行於 Windows、Mac OS 和 Android 等多個桌面平臺的程序,不依賴瀏覽器。

(7)小結

能夠預期,JavaScript 最終將能讓你只用一種語言,就開發出適應不一樣平臺(包括桌面端、服務器端、手機端)的程序。早在2013年9月的統計之中,JavaScript 就是當年 Github 上使用量排名第一的語言。

著名程序員 Jeff Atwood 甚至提出了一條 「Atwood 定律」

「全部能夠用 JavaScript 編寫的程序,最終都會出現 JavaScript 的版本。」(Any application that can be written in JavaScript will eventually be written in JavaScript.)

2.3易學性

相比學習其餘語言,學習 JavaScript 有一些有利條件。

(1)學習環境無處不在

只要有瀏覽器,就能運行 JavaScript 程序;只要有文本編輯器,就能編寫 JavaScript 程序。這意味着,幾乎全部電腦都原生提供 JavaScript 學習環境,不用另行安裝複雜的 IDE(集成開發環境)和編譯器。

(2)簡單性

相比其餘腳本語言(好比 Python 或 Ruby),JavaScript 的語法相對簡單一些,自己的語法特性並非特別多。並且,那些語法中的複雜部分,也不是必須要學會。你徹底能夠只用簡單命令,完成大部分的操做。

(3)與主流語言的類似性

JavaScript 的語法很相似 C/C++ 和 Java,若是學過這些語言(事實上大多數學校都教),JavaScript 的入門會很是容易。

必須說明的是,雖然核心語法不難,可是 JavaScript 的複雜性體如今另外兩個方面。

首先,它涉及大量的外部 API。JavaScript 要發揮做用,必須與其餘組件配合,這些外部組件五花八門,數量極其龐大,幾乎涉及網絡應用的各個方面,掌握它們絕非易事。

其次,JavaScript 語言有一些設計缺陷。某些地方至關不合理,另外一些地方則會出現怪異的運行結果。學習 JavaScript,很大一部分時間是用來搞清楚哪些地方有陷阱。Douglas Crockford 寫過一本有名的書,名字就叫《JavaScript: The Good Parts》,言下之意就是這門語言很差的地方不少,必須寫一本書才能講清楚。另一些程序員則感到,爲了更合理地編寫 JavaScript 程序,就不能用 JavaScript 來寫,而必須發明新的語言,好比 CoffeeScript、TypeScript、Dart 這些新語言的發明目的,多多少少都有這個因素。

儘管如此,目前看來,JavaScript 的地位仍是沒法動搖。加之,語言標準的快速進化,使得 JavaScript 功能日益加強,而語法缺陷和怪異之處獲得了彌補。因此,JavaScript 仍是值得學習,何況它的入門真的不難。

2.4強大的性能

JavaScript 的性能優點體如今如下方面。

(1)靈活的語法,表達力強。

JavaScript 既支持相似 C 語言清晰的過程式編程,也支持靈活的函數式編程,能夠用來寫併發處理(concurrent)。這些語法特性已經被證實很是強大,能夠用於許多場合,尤爲適用異步編程。

JavaScript 的全部值都是對象,這爲程序員提供了靈活性和便利性。由於你能夠很方便地、按照須要隨時創造數據結構,不用進行麻煩的預約義。

JavaScript 的標準還在快速進化中,並不斷合理化,添加更適用的語法特性。

(2)支持編譯運行。

JavaScript 語言自己,雖然是一種解釋型語言,可是在現代瀏覽器中,JavaScript 都是編譯後運行。程序會被高度優化,運行效率接近二進制程序。並且,JavaScript 引擎正在快速發展,性能將愈來愈好。

此外,還有一種 WebAssembly 格式,它是 JavaScript 引擎的中間碼格式,所有都是二進制代碼。因爲跳過了編譯步驟,能夠達到接近原生二進制代碼的運行速度。各類語言(主要是 C 和 C++)經過編譯成 WebAssembly,就能夠在瀏覽器裏面運行。

(3)事件驅動和非阻塞式設計。

JavaScript 程序能夠採用事件驅動(event-driven)和非阻塞式(non-blocking)設計,在服務器端適合高併發環境,普通的硬件就能夠承受很大的訪問量。

2.5開放性

JavaScript 是一種開放的語言。它的標準 ECMA-262 是 ISO 國際標準,寫得很是詳盡明確;該標準的主要實現(好比 V8 和 SpiderMonkey 引擎)都是開放的,並且質量很高。這保證了這門語言不屬於任何公司或我的,不存在版權和專利的問題。

語言標準由 TC39 委員會負責制定,該委員會的運做是透明的,全部討論都是開放的,會議記錄都會對外公佈。

不一樣公司的 JavaScript 運行環境,兼容性很好,程序不作調整或只作很小的調整,就能在全部瀏覽器上運行。

2.6社區支持和就業機會

全世界程序員都在使用 JavaScript,它有着極大的社區、普遍的文獻和圖書、豐富的代碼資源。絕大部分你須要用到的功能,都有多個開源函數庫可供選用。

做爲項目負責人,你不難招聘到數量衆多的 JavaScript 程序員;做爲開發者,你也不難找到一份 JavaScript 的工做。

3.0實驗環境

本教程包含大量的示例代碼,只要電腦安裝了瀏覽器,就能夠用來實驗了。讀者能夠一邊讀一邊運行示例,加深理解。

推薦安裝 Chrome 瀏覽器,它的「開發者工具」(Developer Tools)裏面的「控制檯」(console),就是運行 JavaScript 代碼的理想環境。

進入 Chrome 瀏覽器的「控制檯」,有兩種方法。

  • 直接進入:按下Option + Command + J(Mac)或者Ctrl + Shift + J(Windows / Linux)
  • 開發者工具進入:開發者工具的快捷鍵是 F12,或者Option + Command + I(Mac)以及Ctrl + Shift + I(Windows / Linux),而後選擇 Console 面板

進入控制檯之後,就能夠在提示符後輸入代碼,而後按Enter鍵,代碼就會執行。若是按Shift + Enter鍵,就是代碼換行,不會觸發執行。建議閱讀本教程時,將代碼複製到控制檯進行實驗。

做爲嘗試,你能夠將下面的程序複製到「控制檯」,按下回車後,就能夠看到運行結果。

function greetMe(yourName) { console.log('Hello ' + yourName); } greetMe('World') // Hello World
相關文章
相關標籤/搜索