摘要:運(yùn)行代碼以響應(yīng)在網(wǎng)頁中發(fā)生的特定事件。以及更多然而更令人興奮的是建立在語言的核心之上的功能。這就是為什么谷歌地圖可以找到你的位置,而且標(biāo)示在地圖上。谷歌地圖允許你去嵌入定制的地圖到你的網(wǎng)站,和其他的功能。
轉(zhuǎn)自mdn學(xué)習(xí)網(wǎng)站-什么是JavaScript
歡迎來到 MDN JavaScript 初學(xué)者的課程! 在第一篇文章中,我們將會(huì)站在一定的高度來俯看 JavaScript,回答一些像“它是什么?”和“它能做什么?”的問題 。并確保你熟悉 JavaScript 的用途。
JavaScript 是允許你在網(wǎng)頁中實(shí)現(xiàn)復(fù)雜事情的一門編程語言 —— 每次當(dāng)你瀏覽網(wǎng)頁時(shí)不只是顯示靜態(tài)信息—— 顯示即時(shí)更新的內(nèi)容, 或者交互式的地圖,或 2D/3D 圖形動(dòng)畫,又或者自動(dòng)播放視頻等,你可以確信,JavaScript 參與其中。這是 Web技術(shù)的三層蛋糕標(biāo)準(zhǔn):
這三個(gè)層次規(guī)矩地建立在彼此之上。讓我們用一個(gè)簡單的文本標(biāo)簽作為例子。我們可以用 HTML 來標(biāo)記它,以賦予它結(jié)構(gòu)和目的:
Player 1: Chris
然后我們可以加上一點(diǎn) CSS 來使它看起來更好:
p {
font-family: "helvetica neue", helvetica, sans-serif;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
border: 2px solid rgba(0,0,200,0.6);
background: rgba(0,0,200,0.3);
color: rgba(0,0,200,0.6);
box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
border-radius: 10px;
padding: 3px 10px;
display: inline-block;
cursor:pointer;
}
而最后,我們可以加上一些 JavaScript 來實(shí)現(xiàn)動(dòng)態(tài)行為:
var para = document.querySelector("p");
para.addEventListener("click", updateName);
function updateName() {
var name = prompt("Enter a new name");
para.textContent = "Player 1: " + name;
}
嘗試點(diǎn)擊文本標(biāo)簽,觀察會(huì)發(fā)生什么(同時(shí)注意,你可以在 GitHub 上找到這個(gè)演示—— 源代碼,或者 實(shí)時(shí)運(yùn)行)!
JavaScript 可以做比這更多的東西——讓我們?cè)敿?xì)探索它可以做些什么。
JavaScript 語言的核心包含一些普遍的編程特點(diǎn),以讓你可以做到如下的事情:
name
的變量.click
事件來檢測(cè)按鈕什么時(shí)候被點(diǎn)擊,然后運(yùn)行更新文本標(biāo)簽的代碼。然而更令人興奮的是建立在 JavaScript 語言的核心之上的功能。在你的 JavaScript 代碼里,被稱為應(yīng)用程序編程接口 [Application Programming Interfaces (APIs) ] 的功能會(huì)提供額外的超能力給你使用。
APIs 是已經(jīng)建立好的一套代碼組件,目的是讓開發(fā)者可以實(shí)現(xiàn)除此之外很難甚至不可能實(shí)現(xiàn)的程序。它們的作用就像是已經(jīng)制作好的家具套件對(duì)家居建設(shè)的作用一樣——從一堆已經(jīng)切好的木板開始組裝一個(gè)書柜,顯然比自己設(shè)計(jì),尋找合適的木材,裁切至合適的大小和形狀,找到合適大小的螺絲釘,然后組裝成一個(gè)書柜要簡單得多。
它們 (APIs) 通常分成兩個(gè)分類。
瀏覽器 APIs (Browser APIs) 已經(jīng)安裝在你的網(wǎng)頁瀏覽器中,而且能夠從周圍的計(jì)算機(jī)環(huán)境中揭露數(shù)據(jù),或者做有用的復(fù)雜事情。舉個(gè)例子:
文檔對(duì)象模型 API [DOM (Document Object Model) API] 允許你操作 HTML 和 CSS,創(chuàng)建,移除和修改 HTML,動(dòng)態(tài)地應(yīng)用新的樣式到你的頁面,等等。比如說每次你在一個(gè)頁面里看到一個(gè)彈出窗口,或者顯示一些新的內(nèi)容(像我們?cè)谏厦娴暮唵窝菔局锌吹侥菢樱@就是 DOM 在運(yùn)作。
地理定位 API [Geolocation API] 獲取地理信息。這就是為什么谷歌地圖 [Google Maps] 可以找到你的位置,而且標(biāo)示在地圖上。
畫布 [Canvas] 和 WebGL APIs 允許你創(chuàng)建生動(dòng)的 2D 和 3D 圖像。人們正運(yùn)用這些網(wǎng)頁技術(shù)進(jìn)行一些令人驚嘆的事情——比如說 Chrome Experiments 和 webglsamples。
音像和影像 APIs [Audio and Video APIs],像 HTMLMediaElement
和 WebRTC 允許你運(yùn)用多媒體去做一些非常有趣的事情,比如在網(wǎng)頁中播放音像和影像,或者從你的網(wǎng)頁攝像頭中獲取獲取錄像,然后在其他人的電腦上展示(嘗試我們的簡單快照演示 [Snapshot demo] 以理解這個(gè)概念)。
Note: 上述的很多演示都不能在舊的瀏覽器中運(yùn)行——當(dāng)進(jìn)行實(shí)驗(yàn)時(shí),在現(xiàn)代瀏覽器,像 Firefox, Chrome, Edge 或者 Opera,中運(yùn)行會(huì)是一個(gè)好的想法。當(dāng)你接近交付產(chǎn)品代碼時(shí),你會(huì)需要更深入地去考慮跨平臺(tái)測(cè)試 [cross browser testing](例:現(xiàn)實(shí)客戶會(huì)使用的實(shí)際代碼)。
第三方 APIs (Third party APIs) 默認(rèn)是沒有安裝到瀏覽器中的,而你通常需要從網(wǎng)絡(luò)上的某些地方取得它們的代碼和信息。舉個(gè)例子:
推特 API [Twitter API] 允許你做一些像是在你的網(wǎng)站上展示你的最新推送之類的事情。
谷歌地圖 API [Google Maps API] 允許你去嵌入定制的地圖到你的網(wǎng)站,和其他的功能。
Note: 這些 APIs 是高級(jí)的,而我們不會(huì)在課程中涉及任何的這些 APIs,但是如果你想了解更多,上述的鏈接提供延展的文檔供參考。
這里還有更多可用的東西!然而,不要這么快就感到太過興奮。你不可能只通過 24 小時(shí)的 JavaScript 學(xué)習(xí),就能夠構(gòu)建下一個(gè) Facebook, Google Maps 或者 Instagram——這里有很多的基礎(chǔ)需要優(yōu)先覆蓋。而這就是為什么你在這里——讓我們繼續(xù)前進(jìn)!
在這我們會(huì)開始確實(shí)地查看一些代碼,而在這樣做的同時(shí),探索當(dāng)你在你的頁面上運(yùn)行 JavaScript 的時(shí)候?qū)嶋H發(fā)生了什么。
讓我們簡單地回顧當(dāng)你在瀏覽器中讀取一個(gè)網(wǎng)頁時(shí)發(fā)生什么(在文章 How CSS works 中第一次談及到)。 當(dāng)你在瀏覽器中讀取一個(gè)網(wǎng)頁,你在一個(gè)實(shí)行環(huán)境(瀏覽器標(biāo)簽)中運(yùn)行你的代碼(HTML, CSS 和 JavaScript)。這就像是一個(gè)工廠,獲取原材料(代碼)然后出產(chǎn)一個(gè)產(chǎn)品(網(wǎng)頁)。
在 HTML 和 CSS 已經(jīng)被集合和組裝成一個(gè)網(wǎng)頁后,瀏覽器的 JavaScript 引擎執(zhí)行 JavaScript。這保證了當(dāng) JavaScript 開始運(yùn)行時(shí),網(wǎng)頁的結(jié)構(gòu)和樣式已經(jīng)在該出現(xiàn)的地方了。
這是一個(gè)好事情,正如 JavaScript 的普遍用處是通過 DOM API(如之前提及的那樣)動(dòng)態(tài)地修改 HTML 和 CSS 來更新用戶交界面。如果 JavaScript 在 HTML 和 CSS 加載完成之前加載運(yùn)行,那么會(huì)發(fā)生錯(cuò)誤。
每個(gè)瀏覽器標(biāo)簽本身就是一個(gè)用來運(yùn)行代碼的分離的容器(這些容器用專業(yè)術(shù)語稱為“運(yùn)行環(huán)境”)——這意味著在大多數(shù)情況中,每個(gè)標(biāo)簽中的代碼是完全分離地運(yùn)行,而且在一個(gè)標(biāo)簽中的代碼不能直接影響在另一個(gè)標(biāo)簽中的代碼——或者在另一個(gè)網(wǎng)站中的。這是一個(gè)好的安全措施——如果不是這樣的話,那么海盜們就可以開始寫從其他網(wǎng)站偷取信息的代碼,和其他像這樣的壞事。
Note: 這里有安全的方式去在不同網(wǎng)站/標(biāo)簽中傳送代碼和數(shù)據(jù),但這些方法是高級(jí)的技術(shù),而我們不會(huì)在這門課里覆蓋這些。
當(dāng)瀏覽器遇到一塊 JavaScript 代碼時(shí),它通常會(huì)按順序運(yùn)行這代碼塊,從上往下。這意味著你需要注意你放置代碼的順序。舉個(gè)例子,讓我們回到我們?cè)诘谝粋€(gè)例子中看到的 JavaScript 代碼塊:
var para = document.querySelector("p");
para.addEventListener("click", updateName);
function updateName() {
var name = prompt("Enter a new name");
para.textContent = "Player 1: " + name;
}
在這里我們正選定一個(gè)文本段落 (line 1),然后給它附上一個(gè)事件監(jiān)聽器 (line 3) 使得當(dāng)這個(gè)段落被點(diǎn)擊時(shí),updateName()
代碼塊 (lines 5–8) 會(huì)被運(yùn)行。updateName()
代碼塊(這類可以重復(fù)使用的代碼塊被稱為“函數(shù)”)向用戶請(qǐng)求一個(gè)新的名字,然后把這個(gè)名字插入到段落中以更新顯示。
如果你互換了代碼里最初兩行的順序,它將不會(huì)工作——取而代之的是,你會(huì)在瀏覽器的開發(fā)者控制臺(tái)中得到一個(gè)錯(cuò)誤——TypeError: para is undefined [類型錯(cuò)誤:para沒有被定義]。這意味著 para 對(duì)象還不存在,所以我們不能為它增添一個(gè)事件監(jiān)聽器。
Note: 這是一個(gè)很常見的錯(cuò)誤——你需要注意在嘗試對(duì)你的代碼中引用的對(duì)象進(jìn)行操作前,它已經(jīng)存在。
在編程環(huán)境中,你或許聽說過這兩個(gè)術(shù)語 解釋 [interpreted] 和 編譯 [compiled]。JavaScript 是一個(gè)解釋語言——代碼從上到下運(yùn)行,而運(yùn)行的結(jié)果會(huì)馬上被返回。在瀏覽器運(yùn)行代碼前,你不必先把它轉(zhuǎn)化為其他形式。
另一方面來說,編譯語言則需要在運(yùn)行前轉(zhuǎn)化為另一種形式。比如說 C/C++ 則要先被編譯成匯編語言,然后再由電腦運(yùn)行。
兩種方式都有不同的優(yōu)勢(shì),然而就目前而言,我們不會(huì)談?wù)撨@些。
你或許也聽說過 服務(wù)器端 [server-side] 和 客戶端 [client-side] 代碼這兩個(gè)術(shù)語,尤其是在網(wǎng)頁開發(fā)的語境中。客戶端代碼是在用戶的電腦上運(yùn)行的代碼——當(dāng)瀏覽一個(gè)網(wǎng)頁時(shí),這個(gè)網(wǎng)頁的客戶端代碼就會(huì)被下載,然后由瀏覽器來運(yùn)行和展示。在這個(gè) JavaScript 模塊,我們將會(huì)明確地探討 客戶端 JavaScript [client-side JavaScript]。
在另一方面,服務(wù)器端代碼則在服務(wù)器上運(yùn)行,然后它的結(jié)果會(huì)由瀏覽器進(jìn)行下載和展示。流行的服務(wù)器端網(wǎng)頁語言包含以下幾個(gè)例子:PHP, Python, Ruby, ASP.NET 和 JavaScript!JavaScript 同時(shí)也能用作服務(wù)器端語言,比如說在流行的 Node.js 環(huán)境中——你可以在我們的 動(dòng)態(tài)網(wǎng)頁 - 服務(wù)器端編程 [Dynamic Websites – Server-side programming] 主題中找到更多關(guān)于服務(wù)器端 JavaScript 的知識(shí)。
動(dòng)態(tài) [dynamic] 這個(gè)詞被用來描述客戶端 JavaScript 和服務(wù)器端語言——它指的是能更新網(wǎng)頁/應(yīng)用的內(nèi)容以在不同環(huán)境下顯示不同事物,當(dāng)有需要時(shí)產(chǎn)生新內(nèi)容的能力。服務(wù)器端代碼會(huì)動(dòng)態(tài)地在服務(wù)器上產(chǎn)生新的內(nèi)容,比如說從數(shù)據(jù)庫中提取信息。反之,客戶端 JavaScript則在用戶的瀏覽器中動(dòng)態(tài)地生成新的內(nèi)容,比如說創(chuàng)建一個(gè)新的 HTML 表格,從中插入從服務(wù)器請(qǐng)求到的數(shù)據(jù),然后在已經(jīng)向用戶展示了的網(wǎng)頁中顯示這個(gè)表格。在這兩個(gè)語境中,動(dòng)態(tài)的意義有細(xì)微的不同,但是有聯(lián)系,而且兩種方法(服務(wù)器端和客戶端)通常是在一起工作的。
一個(gè)沒有動(dòng)態(tài)更新內(nèi)容的網(wǎng)頁被指作 靜態(tài) [static] ——它只會(huì)一直顯示一樣的內(nèi)容。
JavaScript 以一種近似于 CSS 的方式應(yīng)用到你的 HTML 頁面中。盡管 CSS 使用 元素去應(yīng)用外部的樣式表 [stylesheet] 和
元素去應(yīng)用內(nèi)部的樣式表到 HTML,JavaScript 只需要在 HTML 世界里的一個(gè)元素——
元素。讓我們學(xué)習(xí)一下它怎么工作。
Apply JavaScript example
在你的瀏覽器和文本編輯器中打開這個(gè)文件。你會(huì)看到這個(gè) HTML 創(chuàng)建了一個(gè)包含了一個(gè)可點(diǎn)擊按鈕的簡單網(wǎng)頁。
然后,在你的文本編輯器里,在你的結(jié)束
標(biāo)簽前接上以下代碼:
現(xiàn)在我們會(huì)在我們的 元素中加上一些 JavaScript 來讓這個(gè)頁面做一些更有趣的東西——在 "http:// JavaScript goes here" 這一行下面加上以下代碼:
function createParagraph() {
var para = document.createElement("p");
para.textContent = "You clicked the button!";
document.body.appendChild(para);
}
var buttons = document.querySelectorAll("button")
for(var i = 0; i < buttons.length ; i++) {
buttons[i].addEventListener("click", createParagraph);
}
保存你的文件并刷新你的瀏覽器——現(xiàn)在當(dāng)你點(diǎn)擊按鈕時(shí),你應(yīng)當(dāng)會(huì)看到一個(gè)新的段落產(chǎn)生并在下方顯示。
Note: 如果你的例子看上去不能工作,再檢查所有的步驟和保證你都做對(duì)了。你有把原始代碼作為 .html
文件保存為本地復(fù)件嗎?你有剛好在標(biāo)簽前加上
元素嗎?你有確切地輸入所示的 JavaScript ?
JavaScript 是區(qū)分大小寫的,而且非常的講究,所以你需要精確地輸入所示的句法,不然它可能會(huì)無法工作.
Note: 你可以在 GitHub 上看到這個(gè)版本 apply-javascript-internal.html (see it live too).
這方法很不錯(cuò),但要是我們想要把我們的 JavaScript 放置在一個(gè)外部文件中呢?現(xiàn)在讓我們探索這個(gè)。
首先,在跟你的簡單 HTML 文件的同一目錄下創(chuàng)建一個(gè)新的文件。命名為 script.js
——保證它以 .js 為文件擴(kuò)展名,因?yàn)檫@是它被認(rèn)作是 JavaScript 的方式。
然后,把所有在你現(xiàn)在的 元素中的腳本 [script] 提取出來并粘貼到 .js 文件。保存這個(gè)文件。
現(xiàn)在替換你的 元素為如下:
保存然后刷新你的瀏覽器,然后你應(yīng)該看到同樣的東西!它工作起來是一樣的,但是現(xiàn)在我們把 JavaScript 寫進(jìn)了一個(gè)外部文件。對(duì)于規(guī)劃你的代碼來說,這通常是一件好事,而且讓它可以在多個(gè) HTML 文件中重復(fù)使用。再加上 HTML 中沒有一大堆腳本的話,HTML 會(huì)更容易閱讀。
Note: 你可以在 GitHub 上看到這個(gè)版本 as apply-javascript-external.html and script.js (see it live too).
注意,有時(shí)候你會(huì)遇到在 HTML 中存在著一絲真實(shí)的 JavaScript 代碼。它或許看上去會(huì)像這樣:
function createParagraph() {
var para = document.createElement("p");
para.textContent = "You clicked the button!";
document.body.appendChild(para);
}
這個(gè)演示有著跟前兩節(jié)的演示一模一樣的功能,除了 元素中包含了一個(gè)內(nèi)聯(lián)的
onclick
處理器以至于函數(shù)會(huì)在按鈕被按下時(shí)運(yùn)行。
然而請(qǐng)不要這樣做。 這是一個(gè)用 JavaScript 來污染你的 HTML 的壞實(shí)踐,而且它還不高效——你會(huì)需要在每個(gè)想要 JavaScript 應(yīng)用到的按鈕上包含 onclick="createParagraph()"
屬性。
使用一個(gè)純 JavaScript 結(jié)構(gòu)允許你使用一個(gè)指令來選取所有的按鈕。我們?cè)谏厦鎸?shí)現(xiàn)這一目的的代碼看上去是這樣的:
var buttons = document.querySelectorAll("button");
for(var i = 0; i < buttons.length ; i++) {
buttons[i].addEventListener("click", createParagraph);
}
這或許看上去比 onclick
屬性要長一些,但是這會(huì)應(yīng)用于所有的按鈕,無論頁面上有多少個(gè),和有多少個(gè)按鈕被添加或者移除。不需要對(duì) JavaScript 進(jìn)行任何修改。
Note: 嘗試編輯你自己的 apply-javascript.html
版本并在文件中加上更多的按鈕。當(dāng)你重新加載時(shí),你應(yīng)該會(huì)發(fā)現(xiàn)所有的按鈕被按下時(shí)都會(huì)創(chuàng)建一個(gè)段落。很簡潔,不是嗎?
正如使用 HTML 和 CSS 一樣,在你的 JavaScript 代碼中書寫會(huì)被瀏覽器忽略掉的注釋是可行的,并且注釋只用來為你的開發(fā)者同事提供關(guān)于代碼如何工作的指引(包括你,如果你在 6 個(gè)月后回到你的代碼并忘記了你做過些什么)。注釋非常有用,而且你應(yīng)該經(jīng)常使用它們,尤其是在更大的應(yīng)用程序中。這里有兩類注釋:
一個(gè)單行注釋書寫在一個(gè)雙正斜杠后 (//),比如:
// I am a comment
一個(gè)多行注釋書寫在字符串 /* 和 */ 之間, 比如:
/*
I am also
a comment
*/
所以舉例說,我們可以用 “注釋” 來為我們上一個(gè)演示的 JavaScript 注釋:
// Function: creates a new paragraph and append it to the bottom of the HTML body.
function createParagraph() {
var para = document.createElement("p");
para.textContent = "You clicked the button!";
document.body.appendChild(para);
}
/*
1. Get references to all the buttons on the page and soter them in an array.
2. Loop through all the buttons and add a click event listener to each one.
When any button is pressed, the createParagraph() function will be run.
*/
var buttons = document.querySelectorAll("button");
for(var i = 0; i < buttons.length ; i++) {
buttons[i].addEventListener("click", createParagraph);
}
所以你到這里了,你在 JavaScript 世界中的第一步。我們僅僅從理論開始,讓你熟悉為什么你會(huì)使用 JavaScript,和你可以用它做什么事情。在這過程中你看到了一些代碼示例并且學(xué)習(xí)到了 JavaScript 是如何與你網(wǎng)站中的其他代碼適配的。
JavaScript 現(xiàn)在或許看上去有一點(diǎn)令人畏懼,但不用擔(dān)心——在這門課中我們會(huì)逐步地引領(lǐng)你。在下一篇文章我們會(huì)全心投入到實(shí)踐,讓你專注其中并建立你自己的 JavaScript 例子。
【end】
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/2176.html
摘要:為數(shù)值固定的表示法,用來表示整數(shù)和浮點(diǎn)數(shù)的。無論你寫何種進(jìn)制,它的存儲(chǔ)還是以二進(jìn)制來存儲(chǔ)的,所以這樣就弄成了浮點(diǎn)數(shù)的存儲(chǔ)精確度,浮點(diǎn)數(shù)只能精確到位小數(shù)。關(guān)系運(yùn)算符關(guān)系運(yùn)算符有和。賦值運(yùn)算符賦值運(yùn)算符有六個(gè)。 現(xiàn)在的爬蟲越來越難了,不再和之前的那樣,隨便抓個(gè)包就可以找到相關(guān)的 url ,然后 post 一下或者 get 一下數(shù)據(jù)就出來了。還有一個(gè)可能就是可能你以前用來學(xué)習(xí)的爬蟲網(wǎng)站太簡單...
摘要:例如注意字符串中的負(fù)十六進(jìn)制數(shù)字是一個(gè)特殊情況,如果你用解析,結(jié)果是不正確的。轉(zhuǎn)換十六進(jìn)制數(shù)時(shí)要小心,如果你不知道要轉(zhuǎn)換對(duì)象的類型,不要使用。字符串轉(zhuǎn)換為數(shù)字的方式總結(jié)負(fù)十六進(jìn)制數(shù)字符串轉(zhuǎn)換為數(shù)字時(shí)。 摘要 :JavaScript 是一個(gè)神奇的語言,字符串轉(zhuǎn)數(shù)字有 5 種方法,各有各的坑法! 原文: Converting Strings to Number in Javascript...
摘要:顯然,相等判斷是基于數(shù)字比較的,而條件判斷是基于布爾值。嚴(yán)格相等嚴(yán)格相等的邏輯相對(duì)簡單粗暴,如果類型不同,就不考慮隱式轉(zhuǎn)換了,直接為假。 JavaScript 中大概有這幾種 類型: undefined null string boolean number object function 之所以在 類型 上加了雙引號(hào),是因?yàn)閲?yán)格來說,null 的類型是 object。但本文討論的主...
摘要:一前言之前寫了一篇文章系列一些奇淫技巧的實(shí)現(xiàn)方法一簡短的函數(shù),獲取時(shí)間戳介紹了函數(shù)和獲取時(shí)間戳的方法。,和對(duì)象的構(gòu)造函數(shù)是對(duì)象的屬性。缺點(diǎn)低版本,無法處理集合的轉(zhuǎn)數(shù)組。 一、前言 之前寫了一篇文章:JavaScript 系列--JavaScript一些奇淫技巧的實(shí)現(xiàn)方法(一)簡短的sleep函數(shù),獲取時(shí)間戳 https://www.mwcxs.top/page/74... 介紹了sle...
摘要:微軟公布版本在月日,微軟公布了版本,增加了一些特性,已經(jīng)離正式版不遠(yuǎn)了,目測(cè)功能應(yīng)該不會(huì)再有太大的變化。由開發(fā)的一個(gè)日期選擇組件,輕松選擇開始時(shí)間和結(jié)束時(shí)間。項(xiàng)目地址發(fā)布版本,一個(gè)基于的。 微軟公布TypeScript 2.0 RC版本 在8月30日,微軟公布了TypeScript 2.0 RC版本,增加了一些特性,已經(jīng)離正式版不遠(yuǎn)了,目測(cè)功能應(yīng)該不會(huì)再有太大的變化。原文地址:http...
摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進(jìn)擊之詞法作用域與作用域鏈?zhǔn)裁词情]包閉包的含義就是閉合,包起來,簡單的來說,就是一個(gè)具有封閉功能與包裹功能的結(jié)構(gòu)。在中函數(shù)構(gòu)成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進(jìn)擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個(gè)具有封閉功能與包裹功能的結(jié)構(gòu)。所謂的閉包就是...
閱讀 954·2023-04-25 23:54
閱讀 3035·2021-11-08 13:21
閱讀 3758·2021-09-27 13:35
閱讀 3380·2021-07-26 23:41
閱讀 1042·2019-08-30 15:52
閱讀 3431·2019-08-30 11:27
閱讀 2087·2019-08-29 18:37
閱讀 528·2019-08-29 17:24