JS 基本概念詳細(xì)介紹
許多人在深入研究 Javascript
之前忽略了 Javascript
的理論方面。這些概念幫助我們了解構(gòu)建 Javascript
應(yīng)用程序時(shí)所采用的不同路徑和模式。這些模式存在于 JS Land
的每個(gè)框架中,因此在學(xué)習(xí)語言本身之前了解這些概念很有意義。
1、JS的特點(diǎn)
1.1 多范式
Javascript
支持過程式、面向?qū)ο蠛褪录?qū)動(dòng)的函數(shù)式編程!掌握 JS
的面向?qū)ο缶幊田L(fēng)格是非常有益的。
面向?qū)ο缶幊炭蓭椭绦騿T更輕松地可視化軟件應(yīng)用程序的組件。此外,學(xué)習(xí) Typescript
(Javascript with Types)可以讓程序員輕松實(shí)現(xiàn)行業(yè)中最好的設(shè)計(jì)模式。這些設(shè)計(jì)模式用于以最有效的方式解決軟件編程中遇到的最常見問題。
這種多功能性使 Javascript
非常平易近人且非常強(qiáng)大。
1.2 解釋
Javascript
與 C/C++
不同,它不是一次讀取程序,而是逐行解釋。這就是說 JS
會(huì)比 C/C++
等編譯語言慢。
警告: Javascript
因在運(yùn)行時(shí)是一種極其被動(dòng)的語言而臭名昭著,對(duì)錯(cuò)誤進(jìn)行故障排除非常困難。
不過隨著時(shí)間和練習(xí),你將學(xué)會(huì)如何流暢地運(yùn)行。最常見的錯(cuò)誤涉及你的變量返回NULL
值。當(dāng)此類問題確實(shí)出現(xiàn)時(shí),請(qǐng)前往 Stack Overflow
,因?yàn)槲蚁蚰惚WC,無論錯(cuò)誤多么離譜,你都不是第一個(gè)遇到錯(cuò)誤的人。在你的項(xiàng)目進(jìn)行開發(fā)時(shí)自由地使用console.log()
也是一個(gè)好辦法。這可以幫助您準(zhǔn)確找出程序生命周期中的時(shí)刻,您的變量可能已經(jīng)脫落。
1.3單線程
Javascript
一次只能執(zhí)行一項(xiàng)任務(wù)。它根據(jù)類型將不同的任務(wù)排隊(duì)到不同的隊(duì)列中。
在最抽象的意義上,Javascript
基本上會(huì)將同步任務(wù)和異步任務(wù)分組,并將它們分開排隊(duì)。
同步任務(wù)是在遇到它們時(shí)立即處理的語句,即它們立即運(yùn)行。這些任務(wù)包括日志語句、變量聲明、條件檢查等。
異步任務(wù)涉及可能需要可變時(shí)間來返回輸出的任務(wù)。異步任務(wù)的一個(gè)示例可能是從 Web API
請(qǐng)求信息。
此外,Javascript
還有一個(gè) Job Queue
,用于處理名為 Promises
的 JS Feature
。
通過右鍵單擊此網(wǎng)頁并點(diǎn)擊檢查選項(xiàng)卡,您實(shí)際上可以看到 Javascript
的單線程特性。接下來,轉(zhuǎn)到剛剛打開的窗口上的控制臺(tái)選項(xiàng)卡。輸入以下代碼并按回車鍵。\
while(true) {}
您現(xiàn)在可以觀察到此頁面完全沒有響應(yīng)。這是因?yàn)榇隧撁嫔系?Javascript
現(xiàn)在正忙于運(yùn)行我們上面執(zhí)行的無限 while 循環(huán)。
1.4 非阻塞
我們之前已經(jīng)討論過異步任務(wù)。由于 JS 在單線程環(huán)境中運(yùn)行,默認(rèn)情況下,它不會(huì)進(jìn)行等待!
異步代碼塊只有在所有同步代碼塊都執(zhí)行完后才會(huì)執(zhí)行,而不管代碼在程序中的位置如何。
console.log("我是第一個(gè)語句") setTimeout(()=> { console.log("我是第二個(gè)語句") },1000) console.log("我是第三個(gè)語句")
這里console.log()
將其中的語句記錄到控制臺(tái),setTimeout()
函數(shù)在一秒鐘后運(yùn)行第二條語句。
在檢查輸出時(shí)
我是第一個(gè)語句 我是第三個(gè)語句 我是第二個(gè)語句
我們可以看到第三條語句在第二條語句之前記錄。這是因?yàn)?JS 處理同步和異步代碼塊的固有方法。
1.5 高級(jí)
JavaScript
是一種高級(jí)語言。高級(jí)語言可能只是意味著它們更接近人類所說的語言。高級(jí)語言能夠提供更多功能來幫助程序員更好地表達(dá)他們正在嘗試構(gòu)建的內(nèi)容。
Javascript
的這種高級(jí)特性有助于它最好地服務(wù)于 Web
的客戶端部分。過去 JS
的一個(gè)主要限制是它只能在客戶端提供服務(wù),而不能像大多數(shù)服務(wù)器端語言那樣進(jìn)行文件操作。
然而,這已經(jīng)改變了NodeJS
,允許開發(fā)人員使用 Javascript
來構(gòu)建后端服務(wù)器。因此,只需使用一種語言,軟件開發(fā)人員就可以在服務(wù)器端和客戶端進(jìn)行操作。這導(dǎo)致全棧工程師變得突出。
1.6 動(dòng)態(tài)類型
Javascript
也是一種動(dòng)態(tài)類型語言。這意味著與需要為變量指定數(shù)據(jù)類型的 C
不同,我們可以type-inference
在 Javascript
中使用來自動(dòng)檢測(cè)數(shù)據(jù)的類型,變量保存。\
// 在 C 中變量必須有數(shù)據(jù)類型。 為了將數(shù)據(jù)類型從一種類型更改為另一種類型,我們需要使用類型轉(zhuǎn)換 int a = 5; char b = "a"; float c = 7.036;
在 Javascript
中,我們使用let
和const
分別聲明變量或常量。\
let a = 5 console.log(a) // 5 a = 'Hello World' console.log(a) // Hello World const b = 'JS 很酷' console.log(b) // JS 很酷 b = '我改變主意了' console.log(b) // Error: const cannot be changed
雖然類型推斷因其易于使用而看起來是一個(gè)加分點(diǎn),但它立即成為需要類型安全作為功能的大型項(xiàng)目的一個(gè)騙局。
出于這個(gè)原因,較大的項(xiàng)目使用 TypeScript
,它只是 Javascript
的包裝器,提供類型、接口和各種其他功能。
2、學(xué)習(xí)策略
在 JS Land
中安頓下來需要一段時(shí)間,但我有一個(gè)簡(jiǎn)單的清單,Minimum Requirements
用于學(xué)習(xí) Express
或 ReactJS
等框架。
首先,不要急于學(xué)習(xí)這些框架。你需要花點(diǎn)時(shí)間掌握 Vanilla Javascript
。
3、基礎(chǔ)知識(shí)
- 變量和常量
- 條件塊(
if-else
) - 循環(huán)(
for
、while
、forEach
) - 開關(guān)盒(
Switch Case
) - 方法(
Functions
)
高級(jí)部分(最低要求)
- 異步/等待
Promises
Javascript
中的類Rest
/Spread
語法- 數(shù)組/對(duì)象迭代器
- 數(shù)組解構(gòu)
- 模塊(導(dǎo)入、導(dǎo)出)
在構(gòu)建項(xiàng)目時(shí)繼續(xù)學(xué)習(xí),很快你就會(huì)對(duì)語言有很強(qiáng)的掌握。
到此這篇關(guān)于JS 基本概念詳細(xì)介紹的文章就介紹到這了,更多相關(guān)JS 基本概念內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS前端實(shí)現(xiàn)解除頁面禁止復(fù)制功能方法詳解
這篇文章主要為大家介紹了JS前端實(shí)現(xiàn)解除頁面禁止復(fù)制功能方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08詳解HTML5 使用video標(biāo)簽實(shí)現(xiàn)選擇攝像頭功能
這篇文章主要介紹了詳解HTML5 使用video標(biāo)簽實(shí)現(xiàn)選擇攝像頭功能的相關(guān)資料,希望通過本文能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10微信小程序getPhoneNumber獲取用戶手機(jī)號(hào)
這篇文章主要介紹了 微信小程序getPhoneNumber獲取用戶手機(jī)號(hào)的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)
這篇文章主要介紹了微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09前端框架ECharts?dataset對(duì)數(shù)據(jù)可視化的高級(jí)管理
這篇文章主要為大家介紹了前端框架ECharts?dataset對(duì)數(shù)據(jù)可視化的高級(jí)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12