读书笔记:编写可维护的javascript

来源:互联网 发布:java哪个的视频好 编辑:程序博客网 时间:2024/05/16 04:02
  1. 使用for-in循环的时候,要使用hasOwnProperty方法进行过滤,除非你想查找原型链上的继承属性
  2. 不应当使用for-in循环进行数组遍历,而只应该对object的属性进行遍历
  3. 每行表达式的结尾要使用分号(;),为了使压缩包能正常工作,还应该为每个js文件的开头加上分号,形如这样的匿名函数定义;(function(){...}());
  4. 变量初始化应该赋值null, 因为typeof这种操作符,对于未初始化的变量返回的是object,而未声明的变量返回undefine
  5. null==undefined的结果是true,而null===undefined的结果是false,因此我们应该使用===,!==
  6. 不要直接在object构造对象上附加属性,而要通过json格式的表示法来初始化一个对象
  7. 函数体中所有变量的声明会被解析器提前到第一句执行语句前,因为js引擎执行函数时会首先扫描作用域内的所有的变量,无论它放在函数体何处
  8. 虽然所有的声明会被提前,而且函数声明优先级高于同名的变量声明,但只要变量在声明的同时进行了初始化,那函数声明就无法再覆盖了
  9. 函数声明不应放在代码块中间或后面,尤其是判断条件的里面,不同的浏览器对此的解释是不同的,但把匿名函数赋值给表达式的声明方式不适用此规则
  10. 不要使用eval,也不要在Function,setTimeout,setInterval等函数中传入字符串
  11. 不要在css中嵌入javascript表达式,这会导致浏览器的重复计算,从而使得系统的整体性能下降,而且这种把js渗入到css中的做法不值得提倡
  12. 不要在javascript中操作对象的css样式。相比上一条,这一条更容易犯错,因为我们经常会在Dom元素中修改style属性
  13. 将css与js分离,同时又能保持相互之间的联系的秘诀就是js只负责操作css的className,而把className的样式定义放在css中
  14. 不要在html中直接嵌入javascript代码片段,而要把javascript代码放入单独的js文件中,使用<script>引用外部文件的方式
  15. 不要在javascript中直接嵌入html代码,使用javascript模板引擎,然后通过变量进行渲染会更好一点
  16. handlebars是一款优秀的javascript模板引擎,它能帮你实现模板+变量=动态html,在ember等前端框架中也有使用
  17. 处理javascript全局变量冲突问题的方法有两种
    1. 一是使用单全局变量
      1. 即一个应用系统的所有内部变量置于某一个全局变量之下,而这个全局变量要位于javascript引擎的上下文环境中
      2. javascript的内置对象,比如Array,Date等,你可以把它们看成是一个单全局变量,因为这些变量几乎在每个应用中都可能使用
      3. 单全局变量的应用要涉及到命名空间的划分和模块的加载
      4. 对于模块加载,可以使用使用AMD(异步模块定义),它提供了全局函数define用于加载依赖模块
      5. 想要使用AMD,需要有与之兼容的模块加载器,比如RequireJS,http://www.requirejs.org/
      6. requireJS提供了一个require全局函数,用来加载模块和执行加载成功后的方法回调
    2. 二是使用零全局变量
      1. 零全局变量的使用,主要是通过匿名函数的即时调用来实现
      2. 虽然零全局变量不会造成全局污染,但通常使用的场景有限
      3. 一般用于页面初始加载,或者需要某段一次性执行的代码,而且它与其它代码无交互,也不对外输出接口
  18. 处理事件时,要将事件处理逻辑和应用逻辑分离,event对象永远只被事件处理逻辑所持有,应用逻辑不要直接访问event对象
  19. 采用typeof运算符检测基本类型,用instanceof检测引用类型,用===检测null
  20. 检测函数:typeof myFunc === "function"
  21. 检测数组:Array.isArray(myArray)
  22. 检测属性:myAttr in myObject, Object.hasOwnProperty
  23. 由于js解析器不会保护任何代码包括执行环境,所以应用开发人员不应该修改除自己代码以外的其它任何代码,这包括js的原生类型,DOM,BOM以及第三方类库,如jQuery等
  24. Ant也可以用作javascript的构建工具


0 0