編寫你的第一段 JavaScript 代碼
JavaScript 是一種充滿驚喜的編程語言。許多人第一次遇到 JavaScript 時,它通常是作為一種 Web 語言出現(xiàn)的。所有主流瀏覽器都有一個 JavaScript 引擎;并且,還有一些流行的框架,如 JQuery、Cash 和 Bootstrap 等,它們可以幫助簡化網(wǎng)頁設計;甚至還有用 JavaScript 編寫的編程環(huán)境。它似乎在互聯(lián)網(wǎng)上無處不在,但事實證明,它對于 ??Electron?? 等項目來說也是一種有用的語言。Electron 是一個構(gòu)建跨平臺桌面應用程序的開源工具包,它使用的語言就是 JavaScript。
JavaScript 語言的用途多到令人驚訝,它擁有各種各樣的庫,而不僅僅是用于制作網(wǎng)站。它的基礎知識十分容易掌握,因此,它可以作為一個起點,助你跨出構(gòu)建你想象中的東西的第一步。
安裝 JavaScript
隨著你的 JavaScript 水平不斷提高,你可能會發(fā)現(xiàn)自己需要高級的 JavaScript 庫和運行時環(huán)境。不過,剛開始學習的時候,你是根本不需要安裝 JavaScript 環(huán)境的。因為所有主流的 Web 瀏覽器都包含一個 JavaScript 引擎來運行代碼。你可以使用自己喜歡的文本編輯器編寫 JavaScript,將其加載到 Web 瀏覽器中,接著你就能看到代碼的作用。
上手 JavaScript
要編寫你的第一個 JavaScript 代碼,請打開你喜歡的文本編輯器,例如 Atom 或 VSCode 等。因為它是為 Web 開發(fā)的,所以 JavaScript 可以很好地與 HTML 配合使用。因此,我們先來嘗試一些基本的 HTML:
保存這個文件,然后在 Web 瀏覽器中打開它。
瀏覽器中顯示的 HTML
要將 JavaScript 添加到這個簡單的 HTML 頁面,你可以創(chuàng)建一個 JavaScript 文件并在頁面的 ??<head>?
? 中引用它,或者只需使用 ??<script>?
? 標記將 JavaScript 代碼嵌入 HTML 中。在這個例子中,我嵌入了下面的代碼:
在瀏覽器中重新加載頁面。
在瀏覽器中顯示帶有 JavaScript 的 HTML
如你所見,??<p>?
? 標簽仍然包含字符串 ??"Nothing here"?
?,但是當它被渲染時,JavaScript 會改變它,使其包含 ??"Hello world"?
?。是的,JavaScript 具有重建??(或只是幫助構(gòu)建)網(wǎng)頁的能力。
這個簡單腳本中的 JavaScript 做了兩件事。首先,它創(chuàng)建一個名為 ??myvariable?
? 的變量,并將字符串 ??"Hello world!"?
? 放置其中。然后,它會在當前文檔(瀏覽器呈現(xiàn)的網(wǎng)頁)中搜索 ID 為 ??example?
? 的所有 HTML 元素。當它找到 ??example?
? 時,它使用了 ??innerHTML?
? 函數(shù)將 HTML 元素的內(nèi)容替換為 ??myvariable?
? 的內(nèi)容。
當然,我們也可以不用自定義變量。因為,使用動態(tài)創(chuàng)建的內(nèi)容來填充 HTML 元素也是容易的。例如,你可以使用當前時間戳來填充它:
重新加載頁面,你就可以看到在呈現(xiàn)頁面時生成的時間戳。再重新加載幾次,你可以觀察到秒數(shù)會不斷增加。
JavaScript 語法
在編程中,語法syntax 指的是如何編寫句子(或“行”)的規(guī)則。在 JavaScript 中,每行代碼必須以分號(??;?
?)結(jié)尾,以便運行代碼的 JavaScript 引擎知道何時停止閱讀。(LCTT 譯注:從實用角度看,此處的“必須”其實是不正確的,大多數(shù) JS 引擎都支持不加分號。Vue.js 的作者尤雨溪認為“沒有應該不應該,只有你自己喜歡不喜歡”,他同時表示,“Vue.js 的代碼全部不帶分號”。詳情可以查看他在知乎上對于此問題的 ??回答??。)
單詞(或 字符串strings)必須用引號(??"?
?)括起來,而數(shù)字(或 整數(shù)integers)則不用。
幾乎所有其他東西都是 JavaScript 語言的約定,例如變量、數(shù)組、條件語句、對象、函數(shù)等等。
在 JavaScript 中創(chuàng)建變量
變量是數(shù)據(jù)的容器。你可以將變量視為一個盒子,你在其中放置數(shù)據(jù),以便與程序的其他部分共享它。要在 JavaScript 中創(chuàng)建變量,你可以選用關(guān)鍵字 ??let?
? 和 ??var?
? 中的一個,請根據(jù)你打算如何使用變量來選擇:??var?
? 關(guān)鍵字用于創(chuàng)建一個供整個程序使用的變量,而 ??let?
? 只為特定目的創(chuàng)建變量,通常在函數(shù)或循環(huán)的內(nèi)部使用。(LCTT 譯注:還有 ??const?
? 關(guān)鍵字,它用于創(chuàng)建一個常量。)
JavaScript 內(nèi)置的 ??typeof?
? 函數(shù)可以幫助你識別變量包含的數(shù)據(jù)的類型。使用第一個示例,你可以修改顯示文本,來顯示 ??myvariable?
? 包含的數(shù)據(jù)的類型:
接著,你就會發(fā)現(xiàn) Web 瀏覽器中顯示出 “string” 字樣,因為該變量包含的數(shù)據(jù)是 ??"Hello world!"?
?。在 ??myvariable?
? 中存儲不同類型的數(shù)據(jù)(例如整數(shù)),瀏覽器就會把不同的數(shù)據(jù)類型打印到示例網(wǎng)頁上。嘗試將 ??myvariable?
? 的內(nèi)容更改為你喜歡的數(shù)字,然后重新加載頁面。
在 JavaScript 中創(chuàng)建函數(shù)
編程中的函數(shù)是獨立的數(shù)據(jù)處理器。正是它們使編程得以 模塊化。因為函數(shù)的存在,程序員可以編寫通用庫,例如,調(diào)整圖像大小或統(tǒng)計時間花費的庫,以供其他和你一樣的程序員在他們的代碼中使用。
要創(chuàng)建一個函數(shù),你可以為函數(shù)提供一個自定義名稱,后面跟著用大括號括起來的、任意數(shù)量的代碼。
下面是一個簡單的網(wǎng)頁,其中包含了一個剪裁過的圖像,還有一個分析圖像并返回真實圖像尺寸的按鈕。在這個示例代碼中,??<button>?
? 這個 HTML 元素使用了 JavaScript 的內(nèi)置函數(shù) ??onclick?
? 來檢測用戶交互,它會觸發(fā)一個名為 ??get_size?
? 的自定義函數(shù)。具體代碼如下:
保存這個文件,并將其加載到 Web 瀏覽器中以嘗試這段代碼。
自定義的 get_size 函數(shù)返回了圖像尺寸
使用 JavaScript 的跨平臺應用程序
你可以從代碼示例中看到,JavaScript 和 HTML 緊密協(xié)作,從而創(chuàng)建了有凝聚力的用戶體驗。這是 JavaScript
的一大優(yōu)勢。當你使用 JavaScript 編寫代碼時,你繼承了現(xiàn)代計算中最常見的用戶界面之一,而它與平臺無關(guān),那就是 Web
瀏覽器。你的代碼本質(zhì)上是跨平臺的,因此你的應用程序,無論是簡單的圖像大小分析器還是復雜的圖像編輯器、視頻游戲,或者你夢想的任何其他東西,都可以被所有人使用,無論是通過
Web 瀏覽器,還是桌面(如果你同時提供了一個 Electron 應用)。
學習 JavaScript 既簡單又有趣。網(wǎng)絡上有很多網(wǎng)站提供了相關(guān)教程,還有超過一百萬個 JavaScript 庫可幫助你與設備、外圍設備、物聯(lián)網(wǎng)、服務器、文件系統(tǒng)等進行交互。在你學習的過程中,請將我們的 ??JavaScript 備忘單?? 放在身邊,以便記住語法和結(jié)構(gòu)的細節(jié)。