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)没有时间限制。

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

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. cadence allegro16.6 pcb文件转pads pcb文件方法教程

    在pcb设计工作中,有时会被要求将pcb文件转成其他软件的格式,pcb Allegro装Pads的方法如下. 在转换的过程中我们需要用到三种软件,ad.pads.allegro.转换的流程是:alle ...

  2. while循环计算规则:内循环—外循环!

    num= 1 #值 =1while num <= 10 : # num(1)小于10 print(num) # 应该打印 这个1的值 num +=1 # num+=1等价于 num再加1 所以这 ...

  3. 【SIKIA计划】_06_Unity2D游戏开发-拾荒者笔记

    [新增分类]Animations 动画——Animation——AnimatorControllerPrefabs 预制 [素材导入]unitypackage 素材包Sprites Editor 编辑 ...

  4. [工具]chrome添加crx扩展程序(附禁止复制破解扩展)

    Hello亲爱的观众朋友们大家好,我是09. 今天带来墙内用户安装chrome插件的方法. 1.打开扩展程序 2.把crx往里拖,欧了. ps.顺带安利chrome禁止复制破解扩展Enable Cop ...

  5. Netty源码分析第3章(客户端接入流程)---->第3节: NioSocketChannel的创建

    Netty源码分析第三章: 客户端接入流程 第三节: NioSocketChannel的创建 回到上一小节的read()方法: public void read() { //必须是NioEventLo ...

  6. 高可用OpenStack(Queen版)集群-11.Neutron计算节点

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

  7. python-python爬取豆果网(菜谱信息)

    #-*- coding = utf-8 -*- #获取豆果网图片 import io from bs4 import BeautifulSoup import requests #爬取菜谱的地址 ur ...

  8. 机器学习(一):记一次k一近邻算法的学习与Kaggle实战

    本篇博客是基于以Kaggle中手写数字识别实战为目标,以KNN算法学习为驱动导向来进行讲解. 写这篇博客的原因 什么是KNN kaggle实战 优缺点及其优化方法 总结 参考文献 写这篇博客的原因 写 ...

  9. Python函数初识二

    一.变量的作用域LEGB 1.1.变量的作用域 在Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名 ...

  10. 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!

    本文主要展示的是通过使用python和PyInstaller来构建恶意软件的一些poc. 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!众所周知的,恶意软件如果影响到了他人的生 ...