高性能 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 任务的运行时间。此类限制分两种:调用栈大小限制和长时间运行脚本限制。

它的基本原理是,浏览器记录一个脚本的运行时间,并在达到一定限度时终止它。

使用定时器让出时间片段、

--待续

   

猜你喜欢

转载自blog.csdn.net/wsh2467991332/article/details/84304101