编写高效的JAvascript——Nicholas C. Zakas(读书笔记)

简介:

Nicholas C. Zakas 在《编写高效的Javascript》一文里总结如下:

 

  • 管理作用域非常重要,因为存取非局部变量要比局部变量耗时更多。尽量避免使用增长作用域链的结构,比如使用with语句和try-catch从句。如果非局部变量的使用超过一次,那么为了降低性能损耗,就应该将它存储到一个局部变量中。

 

  • 存储和读取数据的方式对脚本性能影响极大。字面量和局部变量总是最快的;存取数组元素和对象属性会引起性能损耗。如果数组元素或者对象属性的使用超过一次,那么,为了提高存取速度,就应该将它存储到一个局部变量中。

 

  • 流控制也是影响脚本执行速度的一个重要因素。条件判断有三种方式:if语句、switch语句和数组查找。if语句适用于少量离散值或者一段区间值的判断;switch语句最好用于对3~10个离散值的判断;数组查找在处理大量离散值时效率最高。

 

  • 在Javascript中,循环经常会成为性能瓶颈。为了使循环效率更高效,可以采用倒序的方式来处理元素,也就是在控制条件中,将迭代变量和0 做比较。相比非0值,这种方式要快得多,从而显著提升数组的处理速度。如果必须要进行大量的迭代,还可以考虑使用Duff策略来提高执行速度。

 

  • 谨慎使用HTMLCollection对象。每次存取这类对象的属性,都会重新查询DOM中匹配的节点。为了避免这种高昂的开销,只有在必要时才存取HTMLCollection对象,并将经常存取的值(例如length属性)存储在局部变量中。

 

  • 常见的字符串操作可能带来意料之外的性能问题。Internet Explorer处理字符串连接的速度比其他浏览器要慢得多,但这没什么大不了,除非你执行1000次以上的字符串连接。你可以对Internet Explorer处理字符串连接的方式进行优化:先将所有要连接的字符串存储到数组中,然后调用join()方法合并他们。去除字符串两端的空白也可能很 耗时,这取决于字符串的大小。如果脚本中经常需要去除字符串两端的空白,那请确保使用最优算法。

 

  • 浏览器会限制Javascript可以运行的最长时间,有些会以执行语句的数量作为判断条件,有些则会控制Javascript引擎执行的总时间。你可以使用定时器将任务拆分执行,从而绕开这些限制,避免浏览器弹出中止脚本运行的警告。

相关文章
|
机器学习/深度学习 Web App开发 JavaScript
用JavaScript编写Chip-8模拟器
我相信大多数人都用模拟器玩过游戏吧!比如GBA模拟器,PSP模拟器,NES模拟器等。所以应该也有人会跟我一样想自己写个游戏机模拟器。但这些模拟器对于一个新手来说难度太大了,就比如NES模拟器中CPU的指令就有100个以上了,更别说除了CPU还有显卡之类的东西需要模拟。
1413 0
|
SQL JavaScript 前端开发
如何用 JavaScript 编写你的第一个单元测试
测试代码是确保代码稳定的第一步。能做到这一点的最佳方法之一就是使用单元测试....
如何用 JavaScript 编写你的第一个单元测试
|
存储 缓存 JSON
【读书笔记】《高性能JavaScript》
缺陷 这本书是2010年出版的,这本书谈性能是有时效性的,现在马上就2018年了,这几年前端发展的速度是飞快的,书里面还有一些内容考虑IE6、7、8的东西,殊不知现在这些都已经不再考虑了,所以不可避免的有一些知识是比较老的。有些解决方法现在已经不是最好的解决方式,比如工具那一章。 前言 总的来说,这本书整体给出的性能优化建议,以及作者耐心的实践,对我们开发优化的启发和帮助还是很大的,因为它里边的很多知识,都是作者通过实践总结出来的,都是经验的积累,这在一般的教科书上是学不到的。特别是对于js基础比较差一点的,里面有很多知识点尽管在现在还是非常有必要的。 下面我就将各章节的一些重要的知识点总结写
335 0
【读书笔记】《高性能JavaScript》
|
前端开发 JavaScript
8 种技巧让你编写更简洁的 JavaScript 代码
8 种技巧让你编写更简洁的 JavaScript 代码
401 0
8 种技巧让你编写更简洁的 JavaScript 代码
|
JavaScript 前端开发
PubSubJS:用JavaScript编写的基于主题的发布/订阅库
PubSubJS:用JavaScript编写的基于主题的发布/订阅库
334 0
|
JavaScript 前端开发 测试技术
【Javascript】学习使用mocha(摩卡)编写测试用例-常用命令
【Javascript】学习使用mocha(摩卡)编写测试用例-常用命令
214 0
|
Web App开发 JavaScript 前端开发
|
前端开发 JavaScript
读书笔记-JavaScript高级程序设计(1)
    1.组合继承 (JavaScript 中最常用的继承模式 )   (position: page168) (书中定义了两个变量名 SuperType   SubType  乍一看 感觉不太能区分,我将改为 a b ,更加明显区分开来这是两个东西。
1375 0
|
JavaScript 前端开发
编写可维护的JavaScript
软件生命周期中80%的成本都消耗在了维护上;而且几乎所有的维护者都不是代码的直接开发人。如何让自己写的代码让别人阅读起来更高效?当然是写代码的时候注入一些规范。那么在Javascript中有哪些编程风格值得我们去注重呢?这篇文章将总结《编写可维护的JavaScript》里面的观点。
1550 0

热门文章

最新文章