国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

JavaScript 導論

2023-03-20 15:38 更新

什么是 JavaScript 語言?

JavaScript 是一種輕量級的腳本語言。所謂“腳本語言”(script language),指的是它不具備開發(fā)操作系統(tǒng)的能力,而是只用來編寫控制其他大型應用程序(比如瀏覽器)的“腳本”。

JavaScript 也是一種嵌入式(embedded)語言。它本身提供的核心語法不算很多,只能用來做一些數(shù)學和邏輯運算。JavaScript 本身不提供任何與 I/O(輸入/輸出)相關的 API,都要靠宿主環(huán)境(host)提供,所以 JavaScript 只合適嵌入更大型的應用程序環(huán)境,去調(diào)用宿主環(huán)境提供的底層 API。

目前,已經(jīng)嵌入 JavaScript 的宿主環(huán)境有多種,最常見的環(huán)境就是瀏覽器,另外還有服務器環(huán)境,也就是 Node 項目。

從語法角度看,JavaScript 語言是一種“對象模型”語言。各種宿主環(huán)境通過這個模型,描述自己的功能和操作接口,從而通過 JavaScript 控制這些功能。但是,JavaScript 并不是純粹的“面向?qū)ο笳Z言”,還支持其他編程范式(比如函數(shù)式編程)。這導致幾乎任何一個問題,JavaScript 都有多種解決方法。閱讀本書的過程中,你會詫異于 JavaScript 語法的靈活性。

JavaScript 的核心語法部分相當精簡,只包括兩個部分:基本的語法構造(比如操作符、控制結構、語句)和標準庫(就是一系列具有各種功能的對象比如Array、DateMath等)。除此之外,各種宿主環(huán)境提供額外的 API(即只能在該環(huán)境使用的接口),以便 JavaScript 調(diào)用。以瀏覽器為例,它提供的額外 API 可以分成三大類。

  • 瀏覽器控制類:操作瀏覽器
  • DOM 類:操作網(wǎng)頁的各種元素
  • Web 類:實現(xiàn)互聯(lián)網(wǎng)的各種功能

如果宿主環(huán)境是服務器,則會提供各種操作系統(tǒng)的 API,比如文件操作 API、網(wǎng)絡通信 API等等。這些你都可以在 Node 環(huán)境中找到。

本書主要介紹 JavaScript 核心語法和瀏覽器網(wǎng)頁開發(fā)的基本知識,不涉及 Node。全書可以分成以下四大部分。

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

JavaScript 語言有多個版本。本書的內(nèi)容主要基于 ECMAScript 5.1 版本,這是學習 JavaScript 語法的基礎。ES6 和更新的語法請參考我寫的《ECMAScript 6入門》。

為什么學習 JavaScript?

JavaScript 語言有一些顯著特點,使得它非常值得學習。它既適合作為學習編程的入門語言,也適合當作日常開發(fā)的工作語言。它是目前最有希望、前途最光明的計算機語言之一。

操控瀏覽器的能力

JavaScript 的發(fā)明目的,就是作為瀏覽器的內(nèi)置腳本語言,為網(wǎng)頁開發(fā)者提供操控瀏覽器的能力。它是目前唯一一種通用的瀏覽器腳本語言,所有瀏覽器都支持。它可以讓網(wǎng)頁呈現(xiàn)各種特殊效果,為用戶提供良好的互動體驗。

目前,全世界幾乎所有網(wǎng)頁都使用 JavaScript。如果不用,網(wǎng)站的易用性和使用效率將大打折扣,無法成為操作便利、對用戶友好的網(wǎng)站。

對于一個互聯(lián)網(wǎng)開發(fā)者來說,如果你想提供漂亮的網(wǎng)頁、令用戶滿意的上網(wǎng)體驗、各種基于瀏覽器的便捷功能、前后端之間緊密高效的聯(lián)系,JavaScript 是必不可少的工具。

廣泛的使用領域

近年來,JavaScript 的使用范圍,慢慢超越了瀏覽器,正在向通用的系統(tǒng)語言發(fā)展。

(1)瀏覽器的平臺化

隨著 HTML5 的出現(xiàn),瀏覽器本身的功能越來越強,不再僅僅能瀏覽網(wǎng)頁,而是越來越像一個平臺,JavaScript 因此得以調(diào)用許多系統(tǒng)功能,比如操作本地文件、操作圖片、調(diào)用攝像頭和麥克風等等。這使得 JavaScript 可以完成許多以前無法想象的事情。

(2)Node

Node 項目使得 JavaScript 可以用于開發(fā)服務器端的大型項目,網(wǎng)站的前后端都用 JavaScript 開發(fā)已經(jīng)成為了現(xiàn)實。有些嵌入式平臺(Raspberry Pi)能夠安裝 Node,于是 JavaScript 就能為這些平臺開發(fā)應用程序。

(3)數(shù)據(jù)庫操作

JavaScript 甚至也可以用來操作數(shù)據(jù)庫。NoSQL 數(shù)據(jù)庫這個概念,本身就是在 JSON(JavaScript Object Notation)格式的基礎上誕生的,大部分 NoSQL 數(shù)據(jù)庫允許 JavaScript 直接操作?;?SQL 語言的開源數(shù)據(jù)庫 PostgreSQL 支持 JavaScript 作為操作語言,可以部分取代 SQL 查詢語言。

(4)移動平臺開發(fā)

JavaScript 也正在成為手機應用的開發(fā)語言。一般來說,安卓平臺使用 Java 語言開發(fā),iOS 平臺使用 Objective-C 或 Swift 語言開發(fā)。許多人正在努力,讓 JavaScript 成為各個平臺的通用開發(fā)語言。

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

Mozilla 基金會的手機操作系統(tǒng) Firefox OS,更是直接將 JavaScript 作為操作系統(tǒng)的平臺語言,但是很可惜這個項目沒有成功。

(5)內(nèi)嵌腳本語言

越來越多的應用程序,將 JavaScript 作為內(nèi)嵌的腳本語言,比如 Adobe 公司的著名 PDF 閱讀器 Acrobat、Linux 桌面環(huán)境 GNOME 3。

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

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

(7)小結

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

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

“所有可以用 JavaScript 編寫的程序,最終都會出現(xiàn) JavaScript 的版本。”(Any application that can be written in JavaScript will eventually be written in JavaScript.)

易學性

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

(1)學習環(huán)境無處不在

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

(2)簡單性

相比其他腳本語言(比如 Python 或 Ruby),JavaScript 的語法相對簡單一些,本身的語法特性并不是特別多。而且,那些語法中的復雜部分,也不是必需要學會。你完全可以只用簡單命令,完成大部分的操作。

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

JavaScript 的語法很類似 C/C++ 和 Java,如果學過這些語言(事實上大多數(shù)學校都教),JavaScript 的入門會非常容易。

必須說明的是,雖然核心語法不難,但是 JavaScript 的復雜性體現(xiàn)在另外兩個方面。

首先,它涉及大量的外部 API。JavaScript 要發(fā)揮作用,必須與其他組件配合,這些外部組件五花八門,數(shù)量極其龐大,幾乎涉及網(wǎng)絡應用的各個方面,掌握它們絕非易事。

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

盡管如此,目前看來,JavaScript 的地位還是無法動搖。加之,語言標準的快速進化,使得 JavaScript 功能日益增強,而語法缺陷和怪異之處得到了彌補。所以,JavaScript 還是值得學習,況且它的入門真的不難。

強大的性能

JavaScript 的性能優(yōu)勢體現(xiàn)在以下方面。

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

JavaScript 既支持類似 C 語言清晰的過程式編程,也支持靈活的函數(shù)式編程,可以用來寫并發(fā)處理(concurrent)。這些語法特性已經(jīng)被證明非常強大,可以用于許多場合,尤其適用異步編程。

JavaScript 的所有值都是對象,這為程序員提供了靈活性和便利性。因為你可以很方便地、按照需要隨時創(chuàng)造數(shù)據(jù)結構,不用進行麻煩的預定義。

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

(2)支持編譯運行。

JavaScript 語言本身,雖然是一種解釋型語言,但是在現(xiàn)代瀏覽器中,JavaScript 都是編譯后運行。程序會被高度優(yōu)化,運行效率接近二進制程序。而且,JavaScript 引擎正在快速發(fā)展,性能將越來越好。

此外,還有一種 WebAssembly 格式,它是 JavaScript 引擎的中間碼格式,全部都是二進制代碼。由于跳過了編譯步驟,可以達到接近原生二進制代碼的運行速度。各種語言(主要是 C 和 C++)通過編譯成 WebAssembly,就可以在瀏覽器里面運行。

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

JavaScript 程序可以采用事件驅(qū)動(event-driven)和非阻塞式(non-blocking)設計,在服務器端適合高并發(fā)環(huán)境,普通的硬件就可以承受很大的訪問量。

開放性

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

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

不同公司的 JavaScript 運行環(huán)境,兼容性很好,程序不做調(diào)整或只做很小的調(diào)整,就能在所有瀏覽器上運行。

社區(qū)支持和就業(yè)機會

全世界程序員都在使用 JavaScript,它有著極大的社區(qū)、廣泛的文獻和圖書、豐富的代碼資源。絕大部分你需要用到的功能,都有多個開源函數(shù)庫可供選用。

作為項目負責人,你不難招聘到數(shù)量眾多的 JavaScript 程序員;作為開發(fā)者,你也不難找到一份 JavaScript 的工作。

實驗環(huán)境

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

推薦安裝 Chrome 瀏覽器,它的“開發(fā)者工具”(Developer Tools)里面的“控制臺”(console),就是運行 JavaScript 代碼的理想環(huán)境。

進入 Chrome 瀏覽器的“控制臺”,有兩種方法。

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

進入控制臺以后,就可以在提示符后輸入代碼,然后按Enter鍵,代碼就會執(zhí)行。如果按Shift + Enter鍵,就是代碼換行,不會觸發(fā)執(zhí)行。建議閱讀本教程時,將代碼復制到控制臺進行實驗。

作為嘗試,你可以將下面的程序復制到“控制臺”,按下回車后,就可以看到運行結果。

function greetMe(yourName) {
  console.log('Hello ' + yourName);
}

greetMe('World')
// Hello World


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號