SegmentFault 思否技術週刊 Vol.73 — 如何有效地學習 JavaScript ?

Beverly發表於2022-12-15

本期技術週刊一起了解 Javascript,歡迎大家閱讀 ~

文章推薦

手寫一個同步服務端時間的小工具 // jump__jump

在前端開發的過程中,開發者經常會用到 new Date() 來獲取當前時間,但是 new Date() 是獲取的當前作業系統的時間,由於使用者可以修改當前電腦時間,所以它是不準確的。

大部分情況下,使用者修改當前電腦時間都沒有什麼問題,但是當我們需要根據服務端傳遞的資料時間與當前時間進行計算時,前端展示就會出錯。同時,需要過期時間的資料(時間)存入前端快取( localStorage, IndexedDB )中也是會出現問題。

這時候我們考慮使用伺服器提供的時間,而不是前端時間。伺服器每次進行資料互動時都會在響應頭提供時間資料。我們可以透過該資料修正前端時間。

JavaScript 進階之路 --- 《手寫“回撥地獄”》 // FFF方

我相信有很多學習前端的小夥伴百分百遇到過這樣的面試題:

---“為什麼我們要用 Promise 去代替傳統的回撥函式?”

我相信有很多人都可以隨口回答出:“為了避免回撥地獄,因為回撥地獄會帶來xxx的後果....”

ok,那麼現在我問你,假設現在面試官讓你實現一個 “回撥地獄”。你腦子裡的程式碼會是怎樣的呢?我建議你停下來思考三分鐘?...

不要問為什麼有這麼令人無語的問題,因為這就是我實實在在的面試題之一。起初我覺得面試官在刁難我,然而當我真正理解了這個知識點以後,我非常感謝那位面試官,在去研究這個面試題答案的過程中,讓我對 JS 有了更深層次的理解...所以在手寫 Promise 之前,我希望你能先完成手寫 回撥地獄。

JavaScript 判斷陣列的方法總結,哪種最靠譜? // 前端阿飛

無論在工作還是面試中,我們都會遇到判斷一個資料是否為陣列的需求,今天我們就來總結一下,到底有多少方法可以判斷陣列,看看哪種方法是最好用、最靠譜的。

我們可以從建構函式、原型物件、Object 的原型物件三個角度來進行判斷!

常見 JavaScript 設計模式 — 原來這麼簡單 // 熊的貓

設計模式總共有 23 種,但在前端領域其實沒必要全部都去學習,畢竟大部分的設計模式是在 JavaScript 中佔的比重並不是那麼大,本文會列舉出一些 JavaScript 常見的、容易被忽視的設計模式,不過還是有必要先簡單瞭解一下設計模式相關的概念。

先舉個形象的例子,比如現在正在考試而且恰好在考數學,實際上每道數學題目都對應著一種或多種解決公式(如和三角形相關的勾股定理),而這些解決公式是經過數學家研究、推導、總結好的,我們只需要把題目和已有公式對應上就很容易解決問題,而設計模式也是如此,只不過是它是相對於軟體設計領域而言的。

設計模式(Design pattern) 是一套被反覆使用、經過分類、程式碼設計經驗的總結,簡單來說設計模式就是為了解決,軟體設計領域,不同場景下相應問題的,解決方案。

JavaScript 學習筆記(一) promise 和 async/wait // 北冥有隻魚

JavaScript 也有非同步任務,如果我們想協調非同步任務,就可以選擇使用 Promise,當前的我們只有一個非同步任務,我們希望在非同步任務回撥,那麼可以在用 Promise.then,如果你想關注錯誤結果,那麼可以用 catch,如果你想在任務完成之後做一些清理工作,那麼可以用 Promise 的 finally。
現在我們將非同步任務的數目提升,提升到三個,如果我們想再這三個任務完成之後觸發一些操作,那麼我們可以用 Promise.all,但是但 Promise.all 的缺陷在於,一個任務失敗之後,我們看不到成功任務的結果,如果任務成功與失敗的結果,那麼就可以用 Promise.allSettled。但有的時候我們也指向關注“第一名”,那就用 Promise.race,但有的時候我們也只想要沒犯規的第一名,這也就是 Promise.any。有的時候我們也不想用 then 回撥的這種方式,這寫起來可能有點煩,那就可以用 async/await 。

問答推薦

關於 JavaScript 的問題,還有未解決的,歡迎正在閱讀的小夥伴們一起來解決!


# SegmentFault 技術週刊 #

「技術週刊」是社群特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以新增小姐姐微信~

image.png

相關文章