《高性能JavaScript》學習總結

1. js引擎的執行過程
代碼執行時長(性能)
字符串的連接str+=a+b:內存中創建臨時字符串,將a+b的值賦值給臨時字符串,將臨時字符串和str相加,得到的結果賦值給str

str=str+a+b:將a添加到str後進行連接,然後將b再添加到後面
str=a+b+str,執行過程和str+=a+b差不多,需要分配臨時字符串

當進行字符串拼接時,由於“+=”會拷貝很長的字符串,使用數組的join方法進行合併性能更好
(所有字符串一起連接時,系統會分配足夠內存,而不會多次拷貝字符串中相同的部分)

2. 正則表達式的匹配回溯:
*是貪婪量詞,匹配次數儘可能地多,那麼會完全吞併後面的字符;
*?是懶惰量詞,匹配儘可能地少,最少匹配零次,如果下面例子的正則寫成"<p>.*?</p>",每次會匹配0個後回溯
當遇到完全匹配,如/<p>.*</p>/要匹配"<p>para 1</p>"
由於正則中存在"."會匹配除換行符以外的任意字符,所以<p>後的直接完全匹配,但是匹配完後正則裏還有</p>沒有被匹配到,於是每次回溯一個字符,知道回溯到“<p>para 1”時,下一個字符是"<",後面能匹配到</p>,最終整個過程結束

 

3. 由於JavaScript不需要特定類型的聲明,不需要關心傳入的對象,每個對象知道自己幹什麼,只要存在對應的行爲,多態自然而然形成(可以通過繼承實現)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章