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引擎执行的总时间。你可以使用定时器将任务拆分执行,从而绕开这些限制,避免浏览器弹出中止脚本运行的警告。

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

  1. 《JavaScript高级程序设计》读书笔记 -12.1 window对象

    <JavaScript高级程序设计>读书笔记 -12.1 window对象 12.1 window对象 12.1.1 Global作用域 12.1.2 窗口关系[不是很懂] 12.1.3 ...

  2. 《高效学习7堂课》读书笔记PPT模板

    模板介绍 <高效学习7堂课>读书笔记PPT模板.一套读书笔记幻灯片模板,内含红色多种配色,风格设计,动态播放效果,精美实用. 希望下面这份精美的PPT模板能给你带来帮助,温馨提示:本资源使 ...

  3. 《JavaScript高级程序设计》读书笔记 【8章~】【持更】

    文章目录 上一篇:<JavaScript高级程序设计>读书笔记 [1~7章] 8. BOM 8.1. window对象 窗口位置 窗口大小 打开窗口 间歇调用与超时调用 系统对话框 8.2 ...

  4. 【读书笔记】《编写高效的JavaScript程序》

    为什么80%的码农都做不了架构师?>>>    看到一篇文章,http://www.csdn.net/article/2012-11-20/2811887-writing-fast- ...

  5. 编写高效的JavaScript程序

    转载自http://kb.cnblogs.com/page/168162/ 英文原文:Writing Fast, Memory-Efficient JavaScript Addy Osmani是谷歌公 ...

  6. [实战分析] 编写高效的JavaScript程序

    摘要:有人说想要快速的加载Web网页就如同汽车一样,需要使用特殊工具.想知道JavaScript如何在V8中工作的吗?如何避免性能中出现的陷阱?当涉及到编写高效的内存和快速创建代码时总会出现一些常见的 ...

  7. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  8. 《编写可读代码的艺术》读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近常常来这个网站看看源码,看看博客,觉得只是从中获益,却没有做出自己的一些贡献,最近正好在读<The Art of R ...

  9. 高效能人士的7个习惯--读书笔记分享

    近日阅览了颇多书籍,其中一部甚有感悟,故将其解构,梳理成思维导图形式的读书笔记.望后之览者,亦将有感于斯文.

  10. Web前端性能优化——编写高效的JavaScript

    转载自:https://www.cnblogs.com/MarcoHan/p/5315361.html 前言 随着计算机的发展,Web 富应用时代的到来,Web 2.0 早已不再是用 div+css ...

最新文章

  1. RPC和Restful深入理解
  2. esp8266 接收udp广播_ESP8266_21基于ESP8266的一键配网
  3. 回顾4180天在腾讯使用C#的历程,开启新的征途
  4. 本机获取Intel AMT IP地址的例子
  5. 设计模式_3_建造者模式
  6. 95-290-340-源码-内存管理-Buffer-ByteBuffer简介
  7. Vue 3 正式发布
  8. iOS弹窗UIAlertController的使用
  9. 自己动手Centos7搭建wordpress网站步骤(LNMP+wordpress)
  10. linux 程序崩溃 gdb调试coredump文件
  11. easyui省市二级联动
  12. java 线程 condition_JAVA多线程按指定顺序执行线程 Condition应用
  13. 使用re正则匹配网络请求到的正文内容,筛选出jpg图片链接
  14. 使用微软官方工具MediaCreationTool制作Windows10的U盘安装盘
  15. 电脑读卡器,读卡器在电脑怎么打开_读卡器插在电脑上显示不出来如何修复-win7之家...
  16. excel怎么自动填充连续数字
  17. 深度学习|费解的tensorflow
  18. Oracle aes128和aes256加解密
  19. python 打印/输出元素,用 逗号/空格 分隔
  20. 电影: 嘲笑过片名后,我哭着看完这部片

热门文章

  1. python判断互质_Python3 判断质数以及计算一个数字的质因数
  2. C. Remove Adjacent
  3. Spring Boot学习笔记(二十一)Spring boot 数据校验 @Validated、@Valid用法详解
  4. hutool压缩文件
  5. 2018 Google IO
  6. 七、常用类(高琪java300集+java从入门到精通笔记)
  7. matlab仓库选址,物流中心选址matlab
  8. 解决Sheet can not be presented because the view is not in a window这样的问题
  9. IBM Spectrum LSF
  10. 浏览器标准模式和怪异模式之间的区别是什么?