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

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

对javascript的一点点认识总结《javascript高级程序设计》读书笔记_javascript技巧

l ECMAScript,有ECMA-262定义,明确javascript这门语言的规则和约定,好比为开始一场游戏指定的游戏规则.规范.约定. l DOM:提供访问和操作网页内容的方法和接口 l BOM,提供与浏览器交互的方法和接口 ECMA-262规定了以下内容: l 语法 l 类型 l 关键字 l 保留字 l 操作符 l 对象 ECMAScript是对该标准规定的各方面内容的编程语言描述,javascript实现了ECMAScript指定内容并进行了扩展. BOM用于访问浏览器的功能,包含了

《JavaScript语言精粹》读书笔记

<JavaScript语言精粹>这本书句句是精华.如果你想只读一本书了解JavaScript,这本是你的不二选择. 这么薄的一本书讲JavaScript的特点介绍的非常清楚,是我对JavaScript的认识更加的深入.以前总觉得函数式编程很难理解,但是看了这本书以后我觉得对其有了一个新的认识.严格意义上说JavaScript并不仅仅是一门函数式编程语言,书中有一句话对它的特性做了一个精彩的描述:JavaScript的许多特性都借鉴自其他语言.语法借鉴自java,函数借鉴自Scheme,原型继承

《高效程序员的修炼》 读书笔记

         不得不说,这是一本非常赞的书,远远强于很多夸夸其谈的口水书.      程序员最重要的是学习能力和聪明,所以特别要求某项技能的公司一般是很low的.一个勤奋聪明的程序员,三个月工作的知识和经验,已经足够胜任这一领域普通的任务,能比得上很多在这里呆了很多年的碌碌无为的人.但是一些领域还是需要投入几千小时的专家人物.换到面试官的角度,考算法题是非常必要也是最合理的,因为它就能看出学习能力和是否聪明.      程序员需要双显示器,好的靠椅,安静的环境,以及良好的环境光,工具就像你的

JavaScript高级程序设计 读书笔记之八 Function类及闭包_javascript技巧

Function类 定义 Function类可以表示开发者定义的任何函数,用Function类直接创建函数的语法如下: var function_name=new Function(agrument1,agrument2,...,argumentN,function_body); 每个argument都是一个参数,最后一个参数是函数主体(要执行的代码). 示例: 复制代码 代码如下: function sayHi(sName,sMessage){ alert("Hello "+sNam

(转载)JavaScript大师Nicholas C. Zakas谈TypeScript

在Web领域,几乎每周都会出现新的语言来试图取代JavaScript,比如谷歌推出的Dart就是想解决所有JavaScript不能修复的根本性问题:后来CoffeeScript的出现更煽动了这场取代JavaScript的战争.现在,微软也加入了,这不禁让我想知道为什么? [CSDN.NET 张红月/编译] 前段时间,微软发布了TypeScript语言,这个项目主要的负责人是 Anders Hejlsberg (C#.TurboPascal 之父).TypeScript提供了类.模块和接口来帮助您

《高效的JavaScript代码编写技巧》阅读笔记

<高效的JavaScript代码编写技巧>虽然是不算长的网上文章,但却是非常好的讲述.作者围绕了如何更高效地进行 DOM 操作,作出多方面.有经验的分析与总结.有的是语言编码的技巧(如循环),有的是浏览器本身不足而去要克服的问题,有的是常见的陷阱,要我们如何去注意并规避之.更重要的是,作者不但陈述了问题的现象,在列出解决问题方法的同时,还事先给出错误的实例,反面的示例,以让读者更好地对比,通过"比较的方法"容易快速地体会其中的差异以及细微之处. 原文在:http://www

编写高性能的JavaScript 脚本的加载与执行_javascript技巧

脚本可以放在html页面的head里面,也可以放在body里面. 把脚本放在body中,当浏览器遇见<script>标签时, 浏览器不知道脚本会插入文本还是html标签,因此浏览器会停止分析html页面而去执行脚本.当使用src的方式添加脚本时,浏览器也会做同样的动作.在脚本处理的时候,页面呈现和用户交互将被完全阻止.脚本下载和执行阻塞了其他资源的下载,比如呈现页面使用的图片.(虽然很多浏览器实现了脚本并行下载的技术,但是这个问题依然没有解决) 脚本的位置 鉴于上面的理由,脚本应该始终放在页面

《JavaScript和jQuery实战手册(原书第3版)》---第1章 编写第一个JavaScript程序 1.1 编程简介

本节书摘来自华章出版社<JavaScript和jQuery实战手册(原书第3版)>一书中的第1章,第1.1节,作者David Sawyer McFarland,姚待艳 李占宣 译,更多章节内容可以访问"华章计算机"公众号查看. 第1章 编写第一个JavaScript程序 HTML自身并没有太多智能:它不能做数学运算,不能判断某人是否正确填写了一个表单,而且不能根据Web访问者的交互来做出判断.基本上,HTML让人们阅读文本.观看图片或视频,并且单击链接转向拥有更多文本.图片

JavaScript 设计模式与开发实践读书笔记

JavaScript 设计模式与开发实践读书笔记 最近利用碎片时间在 Kindle 上面阅读<JavaScript 设计模式与开发实践读书>这本书,刚开始阅读前两章内容,和大家分享下我觉得可以在项目中用的上的一些笔记. 我的 github 项目会不定时更新,有需要的同学可以移步到我的 github 中去查看源码: https://github.com/lichenbuliren/design-mode-notes 1.currying 函数柯里化 currying 又称 部分求值 .一个 cu