《JavaScript模式》的读书笔记,个人向!
更新进度随我的阅读进度

基本技巧

尽量少用全局变量

  1. 防止变量污染
  2. 注意JS变量提升问题
  3. 尽量使用单一var模式,只使用一个var在函数顶部进行变量声明
function fun () {
        var a =1,
        b=2,
        sum = a+b,
        函数体//
    }

for循环优化

  1. 循环条件优化
for(var i=0; i<myarry.length; i++){
    //对array[i]进行操作
}

上面那种循环,将marry.length作为循环条件,每次循环时都要访问数据的长度,会使代码变慢,尤其是当条件为HTML容器对象时,每次循环都回去访问DOM,而DOM查询操作是非常慢的,优化方法就是将已循环过的条件缓存起来

//这种方式,对长度只提取一次
for(var i=0, max=myarry.length; i<max; i++){
    //对array[i]进行操作
}

//也可以结合刚才的单一var 模式
var myarry=[],
    max=myarry.length,
    i=0
    
    for(i; i<max; i++){
    
    }

2、用i++替代 i=i+1, i+=1
这样替代的好处是1、使用了最少的变量 2、逐步减至0因为跟0比较比跟数组长度比较更有效率
优化代码

var myarr=[],
    i=myarr.length
    while(i--){
        //操作
    }

for-in循环

  1. 推荐使用,for循环来遍历数组,用for-in循环来遍历对象
  2. hasOwnProperty()过滤原型链属性
var man = {
    hands:2,
    legs:2,
    head:1
},
i=0
Object.prototype.clone='zhang'

for(i in man){
    if(man.hasOwnProperty(i)){
        console.log(i,":",man[i]);
    }
}
//这样子就在循环的时候过滤掉了继承属性了

hasOwnProperty(),并不常用,当确认不了对象的内容时可以用上它进行安全检查

switch模式

switch(n)
{
case 1:
  执行代码块 1
  break;
case 2:
  执行代码块 2
  break;
default:
  result = "unknow"
}
  • 保持缩进整齐
  • 每个case语句结尾有一个break语句
  • 用default作为switch的结尾,当所有case不匹配时给出一个默认结尾

不要增加内置的原型

尽量不要对内置构造函数(Object(),Array()等)增加原型

避免使用隐式类型转换

JS中在使用比较语句时会进行隐式类型转换,别如‘false==0’会返回true
在使用比较语句的时候使用'==='和'!==='来进行比较

parseInt()

parseInt()第二个参数是进制参数,通常可以省略,但最好不要省略,因为该函数在解析0开头的字符串的时候会按8进制来解析

var year="09";
year=parseInt(year,10) // return 9
// parseInt(year)返回值是0

//如果是纯数字字符串,可以用下面两种方法转换
+'08' //结果是8
Number('08') //结果是8
// 如果不是纯数字字符串,只能用paeseInt()来解析,其它方法都将反回NAN

用注释生成API文档

JS有两个开源的工具来用注释生成API文档,分别是JSDoc Toolkit和YUIDoc
根据这两工具所规定的格式来写注释代码,就能够生成API文档


ZONE_98F
357 声望27 粉丝