使用 JavaScript 幾年後,我意識到我面臨的許多問題變得具有挑戰性,僅僅是因為我不知道一些基本概念。如果我早點掌握這些主題,我絕對可以避免一些壓力。
因此,我帶來了4 個概念,這些概念在我的腦海中留下了深刻的印象,當我了解到這些概念時,我感到非常興奮,我建議您看一下並了解如何使用JavaScript ,特別是對於剛開始使用JavaScript 並且至少已經掌握了這些知識的人來說語言的基本概念。
閉包是 JavaScript 中與範圍相關的最強大且經常令人困惑的概念之一。它們允許函數「記住」創建它的環境,即使在該環境不再運作之後。這對於創建“私有”變數和管理狀態而不污染全域範圍非常有用。
範例:
function criarContador() { let contador = 0; return { incrementar: function() { contador++; return contador; }, obterValor: function() { return contador; } }; } const meuContador = criarContador(); console.log(meuContador.obterValor()); // 0 console.log(meuContador.incrementar()); // 1 console.log(meuContador.incrementar()); // 2 console.log(meuContador.obterValor()); // 2
在上面的範例中,內部函數存取屬於外部函數的計數器變量,即使 myCounter 已經使用obtainValor或遞增它傳回了值。由於關閉,這是可能的。
儘管 JavaScript 支援類別和類別繼承(Java 或 C 等語言中已確立的概念),但它透過本機採用基於原型的繼承模型而與眾不同。在 JavaScript 中,每個物件都有一個“原型”,它充當藍圖(模板),允許在物件之間共享屬性和方法。這種原型繼承模型是該語言最基本的特徵之一,使其比傳統的基於類別的繼承更加靈活。
範例:
function Carro(nome) { this.nome = nome; } Carro.prototype.buzina = function() { console.log(`${this.nome} faz um som de buzina`); } const camaro = new Carro('Camaro'); camaro.buzina(); // Camaro faz um som de buzina
這裡,camaro繼承了Carro原型的horn方法,示範了JavaScript中繼承的思想。透過原型鏈,我們可以在不同物件之間共享行為,而不需要重複程式碼。
柯里化是一種將採用多個參數的函數轉換為一系列一次採用單一參數的函數的技術。這種方法對於建立可重複使用函數以及以更靈活的方式組合新函數非常有用。
範例:
function somar(a) { return function(b) { return a + b; } } const somarTres = somar(3); console.log(somarTres(3)); // 6
在範例中,add(5) 傳回一個接受第二個參數的新函數,讓您在程式碼的不同部分重複使用邏輯。
事件循環是理解 JavaScript 如何處理非同步操作的基本概念 - 天哪,理解這對我的 JavaScript 學習來說是一個遊戲規則改變者。它的主要作用是監視呼叫堆疊(執行同步程式碼的位置)和事件佇列(儲存非同步任務,例如回呼、事件和承諾)。當呼叫堆疊為空時,事件循環會從事件佇列中取出任務並將它們放入堆疊中以供執行。這確保了 JavaScript 可以繼續運行程式碼而不會阻塞其他操作,這對於維持處理 I/O 事件、計時器以及與 DOM 互動的應用程式的流暢性至關重要。
例:
console.log('Início'); setTimeout(() => { console.log('Timer expirou'); }, 0); console.log('Fim'); // Saída: // Início // Fim // Timer expirou
即使setTimeout設定為0毫秒,它也會被放入Event Queue中,只有在同步程式碼(如console.log)處理完畢後才會執行。
我打算在另一篇專注於這個概念的文章中更詳細地詳細介紹這一點,並使用圖像,因為對我來說理解它非常重要,而且我相信對很多人來說都是一樣的。
您想了解更多有關這些概念的資訊或有具體問題嗎?評論裡留言,我會看的!
以上是您也會發現很酷的 JavaScript 概念的詳細內容。更多資訊請關注PHP中文網其他相關文章!