返學(xué)費(fèi)網(wǎng) > 培訓(xùn)機(jī)構(gòu) > 全國IT培訓(xùn)中心
想了解javascript有用嗎嗎?想了解一起來聊一下 JavaScript 的用途和那些特性?? 嗎?......本文帶你一探究竟。
簡介我們一起來聊一下 ,用它能做什么,它有哪些特性,以及一些跟它配合使用的技術(shù)。什么是 ? 最初的目的是為了“賦予網(wǎng)頁生命”。這種編程語言我們稱之為腳本。它們可以寫在 HTML 中,在頁面加載的時(shí)候會自動(dòng)執(zhí)行。腳本作為純文本存在和執(zhí)行。它們不需要特殊的準(zhǔn)備或編譯即可運(yùn)行。這方面, 和 Java 有很大的區(qū)別。為什么叫 ? 在剛誕生的時(shí)候,它的名字叫 “”。但是因?yàn)楫?dāng)時(shí) Java 很流行,所以決定將一種新語言定位為 Java 的“弟弟”會有助于它的流行。隨著 的發(fā)展,它已經(jīng)變成了一門獨(dú)立的語言,同時(shí)也有了自己的語言規(guī)范 ?,F(xiàn)在,它和 Java 之間沒有任何關(guān)系?,F(xiàn)在, 不僅僅是在瀏覽器內(nèi)執(zhí)行,也可以在服務(wù)端執(zhí)行,甚至還能在任意搭載了 引擎 的設(shè)備中都可以執(zhí)行。瀏覽器中嵌入了 引擎,有時(shí)也稱作 虛擬機(jī)。不同的引擎有不同的“代號”,例如:V8 —— Chrome 和 Opera 中的 引擎。 —— Firefox 中的 引擎?!€有其他一些代號,像“Trident”,“Chakra”用于不同版本的 IE,“”用于 Microsoft Edge,“Nitro”和“”用于 Safari,等等。上面這些名稱很容易記憶,因?yàn)榻?jīng)常出現(xiàn)在網(wǎng)上開發(fā)者的文章中。我們也會用到這些名稱。例如:某個(gè)新的功能,如果“ 引擎 V8 是支持的”,那么我們可以認(rèn)為這個(gè)功能大概能在 Chrome 和 Opera 中正常運(yùn)行。引擎是如何工作的?引擎很復(fù)雜,但是基本原理很簡單。引擎(通常嵌入在瀏覽器中)讀?。ā敖馕觥保┠_本。然后將腳本轉(zhuǎn)化(“編譯”)為機(jī)器語言。然后這機(jī)器語言代碼快速地運(yùn)行。引擎會對流程中的每個(gè)階段都進(jìn)行優(yōu)化。它甚至可以在運(yùn)行時(shí)監(jiān)視編譯的腳本,分析數(shù)據(jù)流并根據(jù)這些對機(jī)器代碼應(yīng)用優(yōu)化。最后,腳本會執(zhí)行地非常快。瀏覽器中的 能做什么?現(xiàn)代的 是一種“安全”語言。它不提供對內(nèi)存或 CPU 的底層訪問,因?yàn)樗畛跏菫闉g覽器創(chuàng)建的,不需要這些功能。 的能力很大程度上依賴于它執(zhí)行的環(huán)境。例如:Node.js 允許 讀寫任意文件、執(zhí)行網(wǎng)絡(luò)請求等。瀏覽器中的 可以做與網(wǎng)頁操作、用戶交互和 Web 服務(wù)器相關(guān)的所有事情。例如,瀏覽器中的 可以完成下面這些事:在網(wǎng)頁中插入新的 HTML,修改現(xiàn)有的網(wǎng)頁內(nèi)容和網(wǎng)頁的樣式。響應(yīng)用戶的行為,響應(yīng)鼠標(biāo)的點(diǎn)擊或移動(dòng)、鍵盤的敲擊。向遠(yuǎn)程服務(wù)器發(fā)送網(wǎng)絡(luò)請求,下載或上傳文件(所謂 AJAX 和 COMET 技術(shù))。獲取或修改 cookie,向訪問者提出問題、發(fā)送消息。記住客戶端的數(shù)據(jù)(本地存儲)。瀏覽器中的 不能做什么?為了用戶的(信息)安全,在瀏覽器中的 的能力是有限的。這樣主要是為了阻止邪惡的網(wǎng)站獲得或修改用戶的私人數(shù)據(jù)。這些限制的例子有:網(wǎng)頁中的 不能讀、寫、復(fù)制及執(zhí)行用戶磁盤上的文件或程序。它沒有直接訪問操作系統(tǒng)的功能?,F(xiàn)代瀏覽器允許 做一些文件相關(guān)的操作,但是這個(gè)操作是受到限制的。僅當(dāng)用戶使用某個(gè)特定的動(dòng)作, 才能操作這個(gè)文件。例如,把文件“拖”到瀏覽器中,或者通過 <input> 標(biāo)簽選擇文件。 有很多方式和照相機(jī)/麥克風(fēng)或者其他設(shè)備進(jìn)行交互,但是這些都需要提前獲得用戶的授權(quán)許可。所以,啟用了 的網(wǎng)頁應(yīng)該不會偷偷地啟動(dòng)網(wǎng)絡(luò)攝像頭觀察你,并把你的信息發(fā)送到美國安全局。不同的瀏覽器標(biāo)簽頁之間基本彼此不相關(guān)。有時(shí)候,也會有一些關(guān)系。例如,一個(gè)標(biāo)簽頁通過 打開另外一個(gè)新的標(biāo)簽頁。但即使在這種情況下,如果兩個(gè)標(biāo)簽頁打開的不是同一個(gè)網(wǎng)站(域名、協(xié)議或者端口任一不相同的網(wǎng)站),他們都不能夠相互通信。這就是“同源策略”。為了解決“同源策略”問題,兩個(gè)標(biāo)簽頁必須都包含一些處理這個(gè)問題的特殊的 代碼,并均允許數(shù)據(jù)交換,這樣才能夠?qū)崿F(xiàn)兩個(gè)同源標(biāo)簽頁的數(shù)據(jù)交換。本教程會講到這部分相關(guān)的知識。這個(gè)限制也是為了用戶的信息安全。例如,用戶打開的 網(wǎng)頁的 肯定不能訪問 通過互聯(lián)網(wǎng)可以輕松地和當(dāng)前網(wǎng)頁域名的服務(wù)器進(jìn)行通訊。但是從其他網(wǎng)站/域名的服務(wù)器中獲取數(shù)據(jù)的能力是受限的。盡管這可以實(shí)現(xiàn),但是需要來自遠(yuǎn)程服務(wù)器的明確協(xié)議(在 HTTP 頭中)。這也是為了用戶的數(shù)據(jù)安全。瀏覽器環(huán)境外的 一般沒有這些限制。例如服務(wù)端的 就沒有這些限制?,F(xiàn)代瀏覽器還允許安裝可能會要求擴(kuò)展權(quán)限的插件或擴(kuò)展。是什么使得 與眾不同?至少有 3 件事值得一提:+ 和 HTML/CSS 完全的集成。 + 使用簡單的工具完成簡單的任務(wù)。 + 被所有的主流瀏覽器支持,并且默認(rèn)開啟。滿足這三條的瀏覽器技術(shù)也只有 了。這就是為什么 與眾不同!這也是為什么它是創(chuàng)建瀏覽器界面的最普遍的工具。此外, 還支持創(chuàng)建服務(wù)器,移動(dòng)端應(yīng)用程序等。比 “更好”的語言不同的人喜歡不同的功能, 的語法也不能夠滿足所有人的需求。這是正常的,因?yàn)槊總€(gè)人的項(xiàng)目和需求都不一樣。所以,最近出現(xiàn)了很多不同的語言,這些語言在瀏覽器中執(zhí)行之前,都會被編譯(轉(zhuǎn)化)成 ?,F(xiàn)代化的工具使得編譯速度非??焖偾彝该?,實(shí)際上允許開發(fā)人員使用另一種語言編寫代碼并將其自動(dòng)轉(zhuǎn)換為 。這些編程語言的例子有: 是 的語法糖,它語法簡短,明確簡潔。通常使用 Ruby 的人喜歡用。 將注意力集中在增加嚴(yán)格的數(shù)據(jù)類型。這樣就能簡化開發(fā),也能用于開發(fā)復(fù)雜的系統(tǒng)。 是微軟開發(fā)的。Flow 也添加了數(shù)據(jù)類型,但是以一種不同的方式。由 Facebook 開發(fā)。Dart 是一門獨(dú)立的語言。它擁有自己的引擎用于在非瀏覽器環(huán)境中運(yùn)行(如:手機(jī)應(yīng)用),它也能被編譯成 。由 Google 開發(fā)。還有很多其他的語言。當(dāng)然,即使我們在使用這些語言,我們也需要知道 。因?yàn)閷W(xué)習(xí) 可以讓我們真正明白我們自己在做什么。總結(jié) 最開始是為瀏覽器設(shè)計(jì)的一門語言,但是現(xiàn)在也被用于很多其他的環(huán)境。現(xiàn)在, 是一門在瀏覽器中使用最廣、并且能夠很好集成 HTML/CSS 的語言。有很多其他的語言可以被編譯成 ,這些語言還提供了更多的功能。最好還是了解一下這些語言,至少在掌握了 之后簡單地看一下?,F(xiàn)代 教程:開源的現(xiàn)代 入門到進(jìn)階的優(yōu)質(zhì)教程。在線免費(fèi)閱讀:
上述文章了解到關(guān)于一起來聊一下 JavaScript 的用途和那些特性?? ,讓我們對javascript有用嗎 有一個(gè)直觀的認(rèn)知。我們發(fā)現(xiàn),作為一個(gè)優(yōu)秀的Java程序員是多么的自豪。