JavaScript

4 篇文章

== 和 === 的差異

== 和 === 的差異

JavaScript 中 == 和 === 的差異 == 是鬆散比較運算子、===是嚴格比較運算子,兩者最大的不同:==是當等號兩邊 values 的型別不同時,會強制轉換資料型別與值,而 === 不會。 === 嚴格比較 必須等號雙邊的值與型別一致,才會回傳 true,如果型別不同,即使值相同,也會回傳 false。 == 鬆散比較 == 會當等號運算子兩邊值的型別不同時,會在將兩邊的值進行比較之前,強制轉換型別和值,再進行比較。 常見的強制轉換規則 - Boolean,String,Number型別比較時會轉換為數字。 - true 會轉換為 1 , false 會轉換為 0。

2024年10月21日·7 分鐘閱讀
Event loop 事件循環

Event loop 事件循環

JavaScript 中的事件循環 event loop 是什麼? JavaScript 是單執行緒的語言,所以一次只能執行一件事。事件循環 Event loop 是可以確保作為單行緒語言的 Javascript 可以在執行環境(瀏覽器或Node.js)中執行非同步 (asynchronous)程式碼而不會阻塞主執行緒的機制。 事件循環 event loop 進行的流程 1. Javascript 的主執行緒開始執行 scripts,並且將同步任務放入執行棧 (call stack),直到該任務完成後才會被移除。

2024年10月12日·7 分鐘閱讀
Hosting 提升

Hosting 提升

Hosting 提升 Hosting 提升指的是在執行 JavaScript 程式碼之前, JavaScript 引擎會將變數和函式的宣告提升到作用域的頂端。 當瀏覽器運行 Javascript 引擎的時候也就是 runtime 時,會進入創造階段: 創造階段 首先進入創造階段,JavaScript 引擎會會將幫所有的變數和函式準備記憶體的空間,此時的變數與函式會提升。 var 變數的提升 var 變數的宣告會被提升到作用域的的頂端,但賦值(值的初始化)不會被提升。因此,在提升後變數會被初始化為 undefined。

2024年9月19日·4 分鐘閱讀
手寫 debounce 防抖函式和 throttle 節流函式

手寫 debounce 防抖函式和 throttle 節流函式

手寫 debounce 防抖函式和 throttle 節流函式 防抖和節流函式是前端常見的效能優化的技巧,透過這兩個函式可以有效的減少函式被觸發的次數,達到效能優化的目的。 debounce 防抖函式 防抖函式的作用是在一段時間內只執行一次函式。當多次觸發事件時,防抖函式會在最後一次事件觸發後的一段時間內執行一次函式。如果在這段時間內再次觸發事件,計時器會重新計時。 應用場景 - 輸入框搜尋建議:當使用者在搜尋框中輸入時,如果每次按鍵都立即發送請求,這將導致過多的請求。在使用防抖函式後,只有使用者停止輸入一段時間後才會發送搜尋請求。

2024年6月14日·4 分鐘閱讀