App下載

學習JavaScript中的基本概念

萌夠才回家 2021-08-30 11:57:13 瀏覽數 (2841)
反饋

對于初學者來說,Javascript 乍一看似乎很容易,因為它的類似于 C 的語法......

不管它的運行方式如何,對語言 (ESNext) 及其框架所做的不斷變化可能會讓初學者不知所措。
我來這里是為了消除圍繞我認為是一種美麗但最重要的是一種利潤豐厚的語言的困惑

利潤豐厚,因為 JS 幾乎可以輕松完成您今天想做的任何事情。

  • 想要構建一個 Web 應用程序?沒問題。
  • 想要構建 CLI 工具?沒問題。
  • 想要構建桌面應用程序?噗。做起來比說的容易!

每天提供的越來越多的包和庫表明 JS 在構建軟件應用程序時是多么抽象。

然而,JS 似乎受到了很多人的討厭,主要是因為與競爭對手相比,它是多么的非傳統(tǒng)。任何可能錯過 JS 理論方面的人都會感到困惑。

許多人在深入研究 Javascript 之前忽略了 Javascript 的理論方面。這些概念幫助我們了解構建 Javascript 應用程序時所采用的不同路徑和模式。這些模式存在于 JS Land 的每個框架中,因此在學習語言本身之前了解這些概念很有意義。

代碼

JS的特點

(1) 多范式

Javascript 支持過程式、面向對象和事件驅動的函數式編程!
掌握 JS 的面向對象編程風格可以證明是非常有益的。

面向對象編程可幫助程序員更輕松地可視化軟件應用程序的組件。
此外,學習 Typescript(Javascript with Types)可以讓程序員輕松實現行業(yè)中最好的設計模式。這些設計模式用于以最有效的方式解決軟件編程中遇到的最常見問題。

這種多功能性使 Javascript 非常平易近人,但也非常強大。

(2) 解釋

Javascript 與 C/C++ 不同,其中,不是一次讀取程序,而是逐行解釋。這就是說 JS 會比 C/C++ 等編譯語言慢。

警告: Javascript 在運行時是一種非常被動的語言而臭名昭著。對錯誤進行故障排除非常困難。

不過不要灰心。隨著時間和練習,您將學會如何舒適地航行。最常見的錯誤涉及你的變量返回NULL值。當此類問題確實出現時,請前往 Stack Overflow,因為我向你保證,無論錯誤多么小眾,你都不是第一個遇到錯誤的人。然而,console.log()在你的項目進行開發(fā)時自由地使用它總是一個好主意這可以幫助你準確找出程序生命周期中的時刻,你的變量可能已經脫落。

(3) 單線程

Javascript 一次只能執(zhí)行一項任務。它根據類型將不同的任務排隊到不同的隊列中。
在最抽象的意義上,Javascript 基本上會將同步任務和異步任務分組,并將它們分開排隊。

同步任務是在遇到它們時立即處理的語句,即它們立即運行。這些任務包括日志語句、變量聲明、條件檢查等。

異步任務涉及可能需要可變時間來返回輸出的任務。異步任務的一個示例可能是從 Web API 請求信息。

此外,Javascript 還有一個 Job Queue,用于處理名為 Promises 的 JS Feature。

通過右鍵單擊此網頁并點擊檢查選項卡,實際上可以看到 Javascript 的單線程特性。接下來,轉到剛剛打開的窗口上的控制臺選項卡。輸入以下代碼并按回車鍵。

while(true) {}

您現在可以觀察到此頁面完全沒有響應。這是因為此頁面上的 Javascript 現在正忙于運行我們上面執(zhí)行的無限 while 循環(huán)。

(4) 非阻塞

我們之前已經討論過異步任務。由于 JS 在單線程環(huán)境中運行,默認情況下,它不等待任何人!

異步代碼塊只有在所有同步代碼塊都執(zhí)行完后才會執(zhí)行,而不管代碼在程序中的位置如何。


console.log("I'm the first statement")

setTimeout(()=> {
console.log("I'm the second statement")
},1000)

console.log("I'm the third statement")

此處console.log()將其中的語句記錄到控制臺。
上述setTimeout()函數在一秒鐘后運行第二條語句。

在檢查輸出時

I'm the first statement
I'm the third statement
I'm the second statement

我們可以看到第三條語句在第二條語句之前記錄。這是因為 JS 處理同步和異步代碼塊的固有方法。

替換文字

(5) 高層

JavaScript 是一種高級語言。高級語言可能只是意味著它們更接近人類所說的語言。高級語言能夠提供更多功能來幫助程序員更好地表達他們正在嘗試構建的內容。

Javascript 的這種高級特性有助于它最好地服務于 Web 的客戶端部分。過去 JS 的一個主要限制是它只能在客戶端提供服務,而不能像大多數服務器端語言那樣進行文件操作。

然而,這已經改變了NodeJS,允許開發(fā)人員使用 Javascript 來構建后端服務器。因此,只需使用一種語言,軟件開發(fā)人員就可以在服務器端和客戶端進行操作。這導致全棧工程師變得突出。

(6) 動態(tài)類型

Javascript 是一種動態(tài)類型語言。這意味著與需要為變量指定數據類型的 C 不同,我們可以type-inference在 Javascript 中使用來自動檢測數據的類型,變量保存。

// In C variables must have datatypes. In order to change datatypes from one type to //another , we need to use type-casting
int a = 5;
char b = "a";
float c = 7.036;

在 Javascript 中,我們使用letconst分別聲明變量或常量。

let a = 5
console.log(a) // 5
a = 'Hello World'
console.log(a) // Hello World

const b = 'JS is awesome' 
console.log(b) // JS is awesome

b = 'I changed my mind'
console.log(b) // Error: const cannot be changed

雖然類型推斷因其易于使用而看起來是一個加分點,但對于需要類型安全作為功能的大型項目來說,它立即成為一個騙局。

出于這個原因,較大的項目使用 TypeScript,它只是 Javascript 的包裝器,提供類型、接口和各種其他功能。

學習策略

在 JS Land 中安頓下來需要一段時間,但我有一個簡單的清單,Minimum Requirements用于學習 Express 或 ReactJS 等框架。

首先,不要急于學習這些框架。花點時間掌握 Vanilla Javascript。

基礎知識

  1. 變量和常量
  2. 條件塊(if-else)
  3. 循環(huán)(for、while、forEach)
  4. 開關盒
  5. 職能

這些是必不可少的編程基礎。

高級部分(最低要求)

  1. 異步/等待
  2. 承諾
  3. Javascript 中的類
  4. 休息/傳播語法
  5. 數組/對象迭代器
  6. 數組解構
  7. 模塊(導入、導出)

在構建項目時繼續(xù)學習,很快,你就會對語言有很強的掌握。


0 人點贊