React 是一個流行的 Javascript 函式庫,用於建立現實世界的應用程式。要成為熟練的 React 開發人員,了解一些基本的 Javascript 概念非常重要。對許多人來說,學習 React 似乎很困難,但理解這些基本概念可以簡化學習過程。
在本文中,我將介紹每位開發人員在開始 React 之前應該了解的 15 個基本概念。每個概念都透過範例進行解釋,以顯示其重要性。
如果您剛開始使用 React 或即將探索該程式庫,那麼這篇文章適合您。
15 個 JavaScript 基本概念
1.回呼函數
函數是任何程式的建構塊,允許多次呼叫程式碼而無需重複。
一種類型的函數是回調函數。
如果您希望使用者在顯示任何資訊之前點擊瀏覽器中的箭頭,或者希望在從 API 取得資料後立即執行某些程式碼,您可以利用回調的功能。
回調函數在函數或事件發生後執行其任務,並允許控制函數的執行。
它是一個作為參數傳遞給另一個函數的函數,用於指定非同步操作或事件完成後應該發生的情況。
例子
// The callback function function showText() { console.log('The written text should show after 2 seconds.'); } function showAfterDelay(callback, delay) { setTimeout(callback, delay); } showAfterDelay(showText, 2000);
2.箭頭函數
ES6 中引入了箭頭函數,可以讓函數語法寫得更簡潔。箭頭函數因其簡潔而在React中被廣泛使用。
例子
const showText = () => { console.log('This written text should show after 2 seconds.'); }; const showAfterDelay = (callback, delay) => { setTimeout(callback, delay); }; showAfterDelay(showText, 2000);
3.Array.Map() 方法
在 React 中通常不鼓勵更改現有數組,因為這可能會導致不必要的錯誤和效能問題。因此,開發人員採用數組方法。函數式數組方法不會改變原始數組,而是從現有數組傳回一個新數組。
函數式陣列方法之一是 Array.map() 方法。
Array.map() 方法循環遍歷現有陣列並傳回具有相同長度的新陣列。可以對新數組進行更改,而不會對現有數組產生任何影響。
例子
Const BookNumbers = [1,2,3,4]; Const DoubleNumbers = BookNumbers.map((book)=> book *2); Console.log(DoubleNumbers); //Output BookNumbers= [2,4,6,8]
4.Array.Filter() 方法
Array.filter() 方法以有趣且合乎邏輯的方式運作。這些方法可用於根據 true 或 false 條件過濾掉數組中的某些元素。
當一條語句為假時,它會自動被過濾掉;當它為真時,它會保留它,使其成為從陣列中刪除不需要的元素的合適方法。
例子
// The callback function function showText() { console.log('The written text should show after 2 seconds.'); } function showAfterDelay(callback, delay) { setTimeout(callback, delay); } showAfterDelay(showText, 2000);
5.Array.reduce() 方法
顧名思義,array.reduce() 方法將整個陣列減少為單一值。這是對數組元素求和或分組的最佳方法之一。
3個Reduce方法中的重要關鍵字
- 初始值(可選):累加器的起始值。如果不提供,則使用第一個陣列元素作為初始值,從第二個元素開始迭代。
- 累加器(必填):之前迭代的累加結果。
- 目前值(必填):目前正在處理的元素。
例子
const showText = () => { console.log('This written text should show after 2 seconds.'); }; const showAfterDelay = (callback, delay) => { setTimeout(callback, delay); }; showAfterDelay(showText, 2000);
6.範本文字
範本文字允許字串包含Javascript變數或任何JavaScript表達式。
它提供了一種在 JavaScript 中使用反引號和帶有大括號 ${}.
例子
Const BookNumbers = [1,2,3,4]; Const DoubleNumbers = BookNumbers.map((book)=> book *2); Console.log(DoubleNumbers); //Output BookNumbers= [2,4,6,8]
7.三元運算子
三元運算子是條件運算符,提供了一個簡單而簡潔的方式來寫 if..else 語句。
React 不直接支援 if..else 語句,因為它不適合 React 中存在的名為 JSX 的語法表達式。
JSX 是 JavaScript 的語法擴展,允許將 Javascript、CSS 和 React 元件嵌入到 HTML 中。
React 語法更多地被認為是一個表達式而不是一個語句,並且三元作為它合適的運算符。
例子
Const BookNumbers = [1,2,3,4]; Const FilteredNumbers = BookNumbers.filter((book) => book % 2 !== 0 ); Console.log(FilteredNumbers); // Output 1,3
8.短路和邏輯運算子
邏輯運算子用於將多個條件組合成一個表達式。 JavaScript 中存在的主要邏輯運算子有:
- AND- 只有當兩個運算元都為 true 時才傳回 true。
- OR- 如果至少一個操作數為 true,則傳回 true。
- NOT-反轉其運算元的真值..
短路是邏輯運算子中發生的一種行為,在特定條件下,不會計算第二個操作數,因為整個表達式的結果只能由第一個運算元決定。
短路如何運作
和(&&)
- 如果第一個運算元為假,則整個運算式為假,因此不評估第二個運算元。
- 如果第一個運算元為 true,則評估第二個運算元以決定將傳回的值。
或 (||)
- 如果第一個運算元為 true,則整個運算式為 true,因此不計算第二個運算元。
- 如果運算元為假,則評估第二個運算元以決定要傳回的值。
// The callback function function showText() { console.log('The written text should show after 2 seconds.'); } function showAfterDelay(callback, delay) { setTimeout(callback, delay); } showAfterDelay(showText, 2000);
9.RestSpread 運算子
在實例中,當您想要為現有陣列新增屬性或合併一組現有陣列時,擴充運算子是首選運算子。
擴充運算子 (...) 由 3 個點表示,將陣列擴展為單一元素,並在陣列的開頭使用。它用於:
- 合併數組
const showText = () => { console.log('This written text should show after 2 seconds.'); }; const showAfterDelay = (callback, delay) => { setTimeout(callback, delay); }; showAfterDelay(showText, 2000);
- 複製數組
Const BookNumbers = [1,2,3,4]; Const DoubleNumbers = BookNumbers.map((book)=> book *2); Console.log(DoubleNumbers); //Output BookNumbers= [2,4,6,8]
- 為現有陣列新增屬性
Const BookNumbers = [1,2,3,4]; Const FilteredNumbers = BookNumbers.filter((book) => book % 2 !== 0 ); Console.log(FilteredNumbers); // Output 1,3
- 將參數傳遞給函數
const BookNumbers = [1, 2, 3, 4]; const NumberSum = BookNumbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // Output: 15
剩餘運算子(...) 也用 3 個點表示,但寫在陣列的最後。它用於從解構物件/陣列中收集多個屬性。
例子
Const NameValue = "Ade"; const NumValue = 5; const TempLit= `I am ${NameValue}, a ${NumValue} year old girl `
10.選購鏈
可選連結以簡單的方式處理 null 或未定義的值。它用於存取鏈中看似為空或未定義的屬性或任何中間屬性。它將自動被短路並呈現為未定義。理想情況下,如果沒有可選鏈,它會回傳錯誤。
在某些情況下,您不確定物件中是否存在所有值,請考慮使用可選鏈接,因為它是一種提供空值和未定義值檢查的語法。
const BookNumbers = 4; const result = (BookNumbers % 2 === 0) ? "Even" : "Odd"; console.log(result); // Output: "Even"
11.解構數組
當必須從數組同時呼叫多個屬性時,程式碼可能會變得很麻煩。透過解構,可以防止這種情況。
解構允許將數組中的值組裝成不同的變數。
解構可用於
- 跳過一個元素
- 巢狀元素
- 設定預設值。
在開始 React 之前不應該忽略的一個基本概念是解構。
const idVerify = true; const displayMessage = idVerify && "Identified"; console.log(displayMessage); // Output: "Identified"
12.使用不可變數組
陣列可以在 JavaScript 中發生變化,這意味著可以在陣列中新增、刪除或更新屬性。
然而,在 React 中,不變性通常是首選,以保持狀態完整性並確保 React 可以偵測到變更。要在 React 中使用不可變數組,通常使用映射、過濾器和展開運算子等方法來新增、刪除和更新數組中的項目,而無需更改原始數組。
例子
- 新增項目
// The callback function function showText() { console.log('The written text should show after 2 seconds.'); } function showAfterDelay(callback, delay) { setTimeout(callback, delay); } showAfterDelay(showText, 2000);
- 刪除項目
const showText = () => { console.log('This written text should show after 2 seconds.'); }; const showAfterDelay = (callback, delay) => { setTimeout(callback, delay); }; showAfterDelay(showText, 2000);
- 更新項目
Const BookNumbers = [1,2,3,4]; Const DoubleNumbers = BookNumbers.map((book)=> book *2); Console.log(DoubleNumbers); //Output BookNumbers= [2,4,6,8]
13.非同步/等待函數
非同步 JavaScript 控制需要時間才能完成的任務的執行方式。 JavaScript 是一種同步語言,即在單一執行緒中一個接一個地執行程式碼。
在從資料庫取得資料的情況下,在取得完成之前可能需要載入一些程式碼。
透過非同步功能,無需等待操作完成即可執行程式碼,從而提高使用者體驗和整體效能。
在 React 中,您將經常使用應用程式介面 (API),因此,深入了解此功能的工作原理非常重要。
例子
Const BookNumbers = [1,2,3,4]; Const FilteredNumbers = BookNumbers.filter((book) => book % 2 !== 0 ); Console.log(FilteredNumbers); // Output 1,3
14.承諾
Promises 是指表示非同步操作最終完成或失敗的內建物件。
Promise 存在於以下三種狀態之一:
- 待處理:初始狀態,既未完成也未拒絕。
- 已完成:操作成功完成
- 已拒絕:操作遇到錯誤。
Promise 在 JavaScript 中扮演著重要的角色,這使得它成為一個需要學習的重要概念。它使您能夠編寫更清晰的程式碼、系統地處理錯誤並提高整體效能。
15.使用 try.catch.finally 處理錯誤
有時在資料取得過程中會彈出錯誤,讓您思考如何尋找或修復這些錯誤。
透過使用關鍵字,可以以更結構化的方式處理資料擷取。
Try..catch..finally 區塊是 JavaScript 中強大的錯誤處理結構,無論是否發生錯誤,它都可以成功處理潛在錯誤並執行特定程式碼。
查找程式碼中的某些錯誤可能會很耗時。透過利用這些塊,事情變得很容易。
- Try - 包含可能引發錯誤的程式碼。
- Catch - 如果在 try 區塊內拋出錯誤則執行。接收錯誤物件作為參數。
- 最後-無論是否發生錯誤都執行。
例子
const BookNumbers = [1, 2, 3, 4]; const NumberSum = BookNumbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0); console.log(sum); // Output: 15
結論
深入了解上面解釋的基本 JavaScript 概念將簡化學習過程,並引導您成為熟練的 React 開發人員。如果您還沒有學習這些概念,請努力學習。歡迎在留言區分享你的建議!
以上是開始 React 之前需要學習的基本 JavaScript 概念的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器