高性能JavaScript--字符串加(+)和加等(+=)操作符优化方法

首先看一个例子, 这是一个连接字符串的常用方法.

str += "one" + "two";

此代码运行时, 会经历4个步骤:

  1. 在内存中创建一个临时字符串.
  2. 连接后的字符串"onetwo"被赋值给临时字符串.
  3. 临时字符串与str当前的值连接.
  4. 结构赋值给str
    这是浏览器完成此任务的大概步骤.

以下代码在大多数浏览器中这样做会提速10%-40%;

str = str + "one" + "two"

赋值表达式由str开始作为基础, 每次给它附加一个字符串, 从左向右依次连接, 因此避开了临时字符串. 如果改变连接顺序(例如: str = "one" + str + "two"). 本优化将失效. 这与浏览器合并字符串时分配的内存方法有关. 除IE外, 其他浏览器会尝试为表达式左侧的字符串分配更多的内存. 然后简单地将第二个字符串拷贝至它的末尾. 如果在一个循环中, 基础字符串位于最左端的位置, 就可以避免重复拷贝一个逐渐变大的字符串,

这项技术不适用IE

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,872评论 24 1,002
  • 以前听人说有一种植物叫榭寄生,靠吸收寄主的养分生存,当有一天寄主枯萎了它也会跟着枯萎。我不知道是不是也会有这样一种...
    七月江南阅读 1,735评论 0 0
  • 想一些甜蜜而细微的事务,这个中午 除了爱情和爱人,这个世界可爱的事情 还有许多 一只鹅在蓝天下漫步或者戏水 蚯蚓在...
    白咖啡鐘文萍阅读 1,573评论 0 2
  • 看到图片中心的两个人了吗? 她蹲下来了,在跟那个男的说着话。 铁架上的U型锁上卧着一只苍蝇。 苍蝇飞走了,那个男的...
    赳赳赴渔洲阅读 1,417评论 0 0