本期技術週刊一起了解 Javascript,歡迎大家閲讀 ~
文章推薦
淺談 Javascript 閉包 // magnesium
閉包的概念是有很多版本,不同的地方對閉包的説法不一
維基百科:在計算機科學中,閉包(英語:Closure),又稱詞法閉包(Lexical Closure)或函數閉包(function closures),是在支持頭等函數的編程語言中實現詞法綁定的一種技術。
MDN: 閉包(closure)是一個函數以及其捆綁的周邊環境狀態(lexical environment,詞法環境)的引用的組合。
個人理解:
- 閉包是一個函數(返回一個函數)
- 返回的函數保存了對外變量引用
JS 如何返回異步調用的結果? // 現實的理想技術
在 JS 中處理異步調用的結果,最佳實踐就是“異步轉同步”:使用 Promise + async/await 語法關鍵字。在這裏 async 總是與 await 成對出現,一個 async 函數總是返回一個 Promise,一個 await 關鍵字總是在嘗試“解開”一個 Promise,結局要麼等到有價值的數據,要麼異步出現異步,什麼也沒有等到。為了避免出現異常,影響主線程的正常運行,一般要用 catch 規避異常。
從 await-to-js 到 try-run-js // jump__jump
之前在做 code review 時候發現有同事使用 try catch 包裝了一堆異步代碼,於是個人就覺得很奇怪,難道不應該只 catch 可能出問題的代碼嗎?同事告訴我説 try catch 太細的話會出現內外作用域不一致,需要提前聲明變量。
let res: Data[] = [];
try {
res = await fetchData();
} catch (err) {
// 錯誤操作或者終止
// return
}
// 繼續執行正常邏輯
前端性能優化到底該怎麼做 // 熊的貓
性能指標,如下:
- 首字節達到時間(
Time to First Byte,TTFB) - 首次繪製(
First Paint,FP) - 首次內容繪製(
First Contentful Paint,FCP) - 首屏時間 / 最大內容繪製(
Largest Contentful Paint, LCP) - 累積佈局偏移(
Cumulative Layout Shift, CLS) - 首次輸入延遲(
First Input Delay, FID)
關鍵資源越早到達客户端,證明 TTFB 時間越短,而這也能間接的減少 FP 和 FCP 的時間;對資源進行了壓縮處理意味着能夠儘可能提升 LCP 的時間;減少了頁面的 迴流/重繪 就能使得 CLS 的數值越小,視圖越趨於穩定;FID 是一個用於跟蹤瀏覽器對用户輸入做出反應之前的延遲時間的指標,包括點擊和敲擊,保證資源的快速加載和頁面儘早渲染,其對應的數值就越小,視圖響應就越快。
javaScript 進階之路 --- 《手寫 Promise(中篇)》 // FFF方
至此距離我們完成自己的 MyPromise 類已經成功了一大半!我相信通過消化這一篇的內容,你會收穫很多很多額外的知識。是不是有一種原來 Promise 不過如此的感覺~
其實有很多很多東西都是用很基本的函數,通過很巧妙的設計去完成一些看起來很複雜的邏輯。在下一章我們會迎來最後的幾個關鍵點,如:微任務的創建,then 函數的鏈式調用,希望你能堅持下去。
Javascript 變量命名規範 // 一丁目
駝峯命名
首先,和其他語言一樣,大部分變量建議採用駝峯命名法。
var articleTitle = 'javascript變量命名規範'
而對於常量,使用大寫字母和下劃線來組合命名。
const COUNTRY_NAME = 'China'
問答推薦
- js 數組漢字排序?
- js 如何獲取數組元素的前置屬性(如下圖)?
- js 中擁有相同值的兩個基本數據類型的變量,它們的內存地址相同嗎?
- 如何優化對象跟數組匹配獲得新數組的算法?
- js 獲取一串數字中某個數字的索引?
- 請教一下 js 中這種異步的初始化該怎麼設計?
- 我想要 trim 掉左邊的
# ==和右邊的==,請問 js 如何做到呢? - js 需要等待長時間執行的代碼,我需要怎麼處理?
- js 怎麼刪除 style 中某個類樣式?
# SegmentFault 技術週刊 #
「技術週刊」是社區特別推出的技術內容系列,一週一主題。
每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。
如有問題可以添加小姐姐微信~