1. 逗号运算符比较怪异。如    var a =(1,2,3,4);alert(a);// 4      var a = 1,2,3,4;//报错
  2. 注意a++和++a的差别,变量在参与运算中不断地变化。var a; a = (a++) + (++a) - (a++) - (a++);
  3. 在if语句中禁止使用function语句,虽然大多数的浏览器都允许在if语句中使用function,但它们在解析function语句的处理各不相同,因此造成了可移植性方面的问题。一个语句不能以一个函数表达式开头(?)。
  4. 基于函数的迭代要比基于循环的迭代慢一些。因为每个数组项要关联额外的函数调用时造成速度慢的主要原因。
  5. 当条件体增加时,if性能负担增加的程度比switch更大。
  6. 在JavaScript提供的4中循环类型中,只有for in 循环执行速度比其他循环明显要慢,因为除了要查找对象上的属性外,还要查找原型链上的属性,增加性能开销。(in 运算符的运算机制?)
  7. 回溯是影响正则整体性能的唯一因素。
  8. 使用function语句和函数直接量定义的函数构造总会被里提取出来优先执行。只有在函数被解析和执行完毕之后,才会按顺序执行其他代码行。但是使用new Function构造函数定义的函数并非提前运行,而是运行时动态地被执行,这也是Function构造函数定义的函数具有顶级作用域的根本原因。
  9. 通过new运算符可以复制函数的结构,从而实现函数实例化的目的。
  10. 惰性载入函数主要解决的问题也是兼容性,原理跟分支函数类似。
  11. 函数绑定是为了改变函数执行上下文,特别是当函数中有this关键字时。
  12. 高阶函数至少满足以下条件之一:□接收函数作为输入;□输出一个函数
  13. 借助prototype属性,可以访问原型对象内部成员。当构造函数实例化后,所有实例对象都可以访问构造函数的原型成员。
  14. 本地属性会覆盖原型属性,如果使用delete运算符删除本地属性,那么原型属性依然会显示出来。
  15. 使用原型的几种用途:1)使用原型设置默认值;2)使用原型实现数据备份;3)使用原型设置只读属性;4)使用原型进行批量复制
  16. “||”运算符为对象属性设置默认值,当对象属性值未定义时,以默认值进行传递。
  17. 使用hasOwnProperty方法。如果对象拥有独有的属性,那么调用该方法将返回true,也就是说hasOwnProperty不会检查原型链。
  18. 构造函数是一个特殊结构的函数,它没有返回值,通过this关键字来初始化实例对象。
  19. JavaScript核心对象中的Math和Global都是静态对象,不需要实例化就可以直接访问。
  20. 类的静态成员包括私有和公共两种类型,不管是公共成员还是私有成员,它们在系统中只有一份副本,不会被分成多份传递给不同的对象,而是通过函数指针进行引用,这与闭包截然不同。
  21. 如果构造函数有返回值,并且返回值是引用类型,那么经过new运算符计算后,返回的不再是构造偶函数自身对应的实例对象,而是构造函数包含的返回值(即引用类型值)。
  22. 浏览器渲染操作的顺序如下:1)解析HTML结构;2)加载外部脚本和样式文件;3)解析并执行脚本代码;4)构造HTML DOM模型;5)加载图片等外部文件;6)页面加载完毕
  23. createElement和innerHTML两者性能基本相近,不过在几乎所有的浏览器中innerHTML速度更快一些,但最新的基于WebKit的浏览器(Chrome和Safari)除外。
  24. 警惕文档遍历中的空格bug。在遍历DOM文档元素时,空格的存在很容易造成误解,因为DOM把空格也作为一个节点进行解析(包括换行符)。
  25. 在大多数浏览器上,克隆节点更有效率,但提高得不太多。用克隆节点的办法创建1000行表格,只创建一次单元格,然后重复执行复制操作,只有会更快一点。
  26. 当DOM改变影响到元素的几何属性(宽和高)时,如改变边框属性或在段落中添加文字将发生一系列后续动作:浏览器需要重新计算元素的几何属性,而且其他元素的几何属性和位置也会因此改变并受到影响。浏览器使渲染树上受到影响的部分失效,然后重构渲染树,这个过程称作重排版(reflow)。
  27. 对于浏览器窗口来说,通过获取html标签的clientWidth和clientHeight属性就可以得到浏览器窗口的可视宽度和高度,document.documentElement.clientWidth。但是ie一下版本的浏览器中,body是最顶层的可视元素,因此需要写成document.body.clientWidth。
  28. 在JavaScript中,不只是with表达式人为地改变运行期上下文的作用域链,try catch表达式的catch子句也具有相同效果。
  29. DOM元素中有一些特殊的测量属性的访问和方法的调用,也会触发reflow,比较典型的就是offsetWidth和getComputedStyle。
  30. 为了提高DOM访问效率,推荐使用XPath查找元素。很多浏览器已支持该功能。
  31. 每个浏览器对长时间运行脚本检查方法上略有不同:IE)500万条语句以内;FF)默认限制为10s;Safari)默认限制为5s,且不可改变但能关闭;Chrome)没有长时间运行脚本限制,代之以依赖它的通用崩溃检测系统来处理此类实例;Opera)没有时间限制。

转载于:https://www.cnblogs.com/shuiyi/p/5433272.html

《编写高质量代码改善JavaScript程序的188个建议》读书笔记相关推荐

  1. 读书笔记 | 墨菲定律

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  2. 读书笔记 | 墨菲定律(一)

    1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...

  3. 洛克菲勒的38封信pdf下载_《洛克菲勒写给孩子的38封信》读书笔记

    <洛克菲勒写给孩子的38封信>读书笔记 洛克菲勒写给孩子的38封信 第1封信:起点不决定终点 人人生而平等,但这种平等是权利与法律意义上的平等,与经济和文化优势无关 第2封信:运气靠策划 ...

  4. 股神大家了解多少?深度剖析股神巴菲特

    股神巴菲特是金融界里的传奇,大家是否都对股神巴菲特感兴趣呢?大家对股神了解多少?小编最近在QR社区发现了<阿尔法狗与巴菲特>,里面记载了许多股神巴菲特的人生经历,今天小编简单说一说关于股神 ...

  5. 2014巴菲特股东大会及巴菲特创业分享

     沃伦·巴菲特,这位传奇人物.在美国,巴菲特被称为"先知".在中国,他更多的被喻为"股神",巴菲特在11岁时第一次购买股票以来,白手起家缔造了一个千亿规模的 ...

  6. 《成为沃伦·巴菲特》笔记与感想

    本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载: 甚至无需保留以上版权声明-- 沃伦·巴菲特传记的纪录片 http://www.bilibili.co ...

  7. 读书笔记002:托尼.巴赞之快速阅读

    读书笔记002:托尼.巴赞之快速阅读 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<快速阅读>之后,我们就可以可以快速提高阅读速度,保持并改善理解嗯嗯管理,通过增进了解眼睛和大脑功能 ...

  8. 读书笔记001:托尼.巴赞之开动大脑

    读书笔记001:托尼.巴赞之开动大脑 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<开动大脑>之后,我们就可以对我们的大脑有更多的了解:大脑可以进行比我们预期多得多的工作:我们可以最 ...

  9. 读书笔记003:托尼.巴赞之思维导图

    读书笔记003:托尼.巴赞之思维导图 托尼.巴赞的<思维导图>一书,详细的介绍了思维发展的新概念--放射性思维:如何利用思维导图实施你的放射性思维,实现你的创造性思维,从而给出一种深刻的智 ...

  10. 产品读书《滚雪球:巴菲特和他的财富人生》

    作者简介 艾丽斯.施罗德,曾经担任世界知名投行摩根士丹利的董事总经理,因为撰写研究报告与巴菲特相识.业务上的往来使得施罗德有更多的机会与巴菲特亲密接触,她不仅是巴菲特别的忘年交,她也是第一个向巴菲特建 ...

最新文章

  1. 辅助域控如何抢占角色(主域控已经down机不可恢复了)
  2. 推荐几本Python电子书
  3. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
  4. .NET 6 平台系列1 .NET Framework发展历程
  5. 2018-03-02 GNUtls 对 TPM1.2 的原生支持
  6. 第一个python程序:爬虫下载课件
  7. 数据库系统概念第六版课后习题答案-第一章
  8. 关于 ADXL362 传感器不工作的说明
  9. 自动对焦模式与af区域模式_什么是自动对焦,不同模式意味着什么?
  10. 计算机高级职称考试报考条件,高级工程师证怎么考 报考条件
  11. [日常] Go语言圣经前言
  12. 电脑重装系统Win10关闭网速限制的方法
  13. github注册,使用方法
  14. 光学系统中的几何像差
  15. WNcry@2o17
  16. docker进入到某个容器
  17. 【Distill 系列:三】CVPR2019 Relational Knowledge Distillation
  18. 拼多多怎么设置不包邮?怎么看评价?
  19. 通过各种实践活动 培养学生道德品质
  20. 中文***测试专用系统——【MagicBox】

热门文章

  1. 【机器视觉】 executable_expression算子
  2. 【Linux】一步一步学Linux——ifcfg命令(157)
  3. 【SDL】SDL学习笔记二 定时器
  4. 【Linux】Linux中目录结构说明
  5. c语言判断素数squ,poj1811——Prime Test//素数判断+整数分解因子
  6. notepad运行python为啥与pycharm运行的结果不一样_零基础初学Python,需要装什么软件?...
  7. docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
  8. 计算机应用基础 试列出windows中运行一个程序的三种途径,2012-10-17——郑州大学远程教育学院2012计算机应用基础考试考题和答案.doc...
  9. redis设置键的生存时间或过期时间
  10. hihoCoder #1445 : 后缀自动机二·重复旋律5