《高性能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不需要特定类型的声明,不需要关心传入的对象,每个对象知道自己干什么,只要存在对应的行为,多态自然而然形成(可以通过继承实现)

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