1. 程式人生 > >高效能 JavaScript 讀書筆記(五)

高效能 JavaScript 讀書筆記(五)

字串和正則表示式

字串連線

連線字串有很多方式,常見的有:

1.str = "a" + "b" + "c";

2.str = "a"; str += "b"; str += "c";

3.str = ["a","b","c"].join("");

4.str = "a"; str = str.concat("b","c");

當連線少量字元的時候,這些方法的執行速度都很快,使用時可以選擇最熟悉的做法。隨著需要合併的字串的長度和數量增加,有一些方法開始展現出優勢。

加(+)和加等(+=)操作符

使用 += 操作符的時候,會產生臨時字串。它的執行過程如下:

1.在記憶體中建立一個臨時字串。

2.連線後的字串 “onetwo” 被複制給該臨時字串。

3.臨時字串與 str 當前的值連線。

4.結果賦值給str。

但是如果把字串寫成:

str += "one"; str += "two"; 就可以避免產生臨時字串。

寫成  str = str + "one" + "two"; 可以達到同樣的效果。

正則表示式優化

正則表示式的工作原理:當你建立了一個正則表示式物件,瀏覽器會驗證你的表示式,然後把它轉化為一個原生程式碼程式,用於執行匹配工作。

(你可以把正則物件賦值給一個表示式,來避免重複 建立函式 這一步驟

(這一章還是暫時省略吧,我正則用的不多。以後再看)

快速響應的使用者介面

用於執行 JavaScript 和更新使用者介面得程序通常被成為 ”瀏覽器 UI 執行緒“。UI 執行緒的工作基於一個簡單的佇列系統,任務會被儲存到佇列中直到程序空閒。每次使用者進行操作的時候,就會將操作加入佇列。

js 的執行、UI 更新、重繪重排 等操作都會被加入佇列中。如果使用者在佇列中任務正在執行的時候,對介面進行操作,那麼就會u出現介面無響應的情況。

事實上,大多數瀏覽器在 JavaScript 執行時會停止把新任務加入 UI 執行緒的佇列中,也就是說,JavaScript 任務必須儘快結束,以避免對使用者體驗造成不良影響。

瀏覽器限制

瀏覽器限制了 JavaScript 任務的執行時間。此類限制分兩種:呼叫棧大小限制和長時間執行指令碼限制。

它的基本原理是,瀏覽器記錄一個指令碼的執行時間,並在達到一定限度時終止它。

使用定時器讓出時間片段、

--待續