<<编写可维护的javascript>> part1: 编程风格


chapter1 基本格式

- 缩进
        > tab or 2空格 or 4空格
- 语句结尾
        > 语句记得加";"
        > json 对象最后不要加 ","
- 行的长度
        > 80字符
        > 超过了就换行, 记得空两个缩进
- 空行
        > 在方法前+空行
        > 在方法中局部变量和第一条语句前+空行
        > 多行或单行注释前+空行
        > 在逻辑判断片段前+, 如 if, switch, while, for, try
- 命名
        > 驼峰命名
                >> 尽量动词开头: get, set, is, can, has...
        > 常量命名
                >> 用大写+下划线 : 
            1
 var MAX_COUNT = 10;
        > 构造函数命名
                >> 大写字母开头 : 
            1
var p = new Person("haili");
- 直接量: [字符串, 数字, undefined, null, 布尔值]
        > 字符串
                >> jquery 规范都用双引号, 所以尽量用双引号, (拼接html代码时可以用单引号)
        > null
                >> 好的写法: 1. 初始化变量, 2. 检查变量是否为null 
                >> 不好的法: 1. 检查是否传入了参数
        > 直接量
                >> 好的写法:     
            1
2
var object = {}; // 创建对象
var array = []; // 创建数组
                >> 不好的法: 
            1
2
var object = new Obejct(); // 创建对象
var array = new Array("1"); // 创建数组


chapter2 注释
- 单行注释
        > 句尾的注释的//之前和之后都加空格 :
        1
var a = 1; // 两个空格
- 多行注释
        > 和java 一样
- 使用注释
        > 在关键的需要提示的地方加注释就好....


chapter3 语句和表达式
- 花括号
        > 不能省花括号
        > 左( 前和 右) 后加空格: 
        1
 if (true) {} // 两个空格
- with
        > 不要用with, 不要用with, 不要用with!
- for
        > [数组]用 for (i=0, len=5; i<len; i++) {} // i, len 在外面定义
        > [对象]用 for (prop in object) {} // prop 在外面定义
                >> 记得加 hasOwnPorperty() : 
            1
2
3
4
5
6
for (prop in object) {
  
    if (object.hasOwnPorperty(prop)) { // 不加可能会遍历到原型继承来的属性
        ...
    }
}


chapter4 变量, 函数, 运算符
- 变量声明
        > 使用单 var
        > 在函数内部任意地方定义变量和在函数顶部声明是完全一样的, 这和js引擎解析的方式一样, 因此, 变量应该定义在函数顶部:
        1
2
3
4
5
6
7
function doSth() {
    var i, len; // 单var, 变量声明空一行
 
    for (i=0, len=10; i < len; i++) {
        ... // 回想 hasOwnPorperty() 在遍历对象时要加上
    }
}
- 函数声明
        > 函数声明写在调用函数的语句前
        > 函数名后左(前不加空格, 右) 后加空格
        1
2
function doSth(param) {...} // 好的写法
function doSth (param) {...} // 不好的写法(多了个空格), 看起来像语句块
- 相等
        > 用 === 和 !== , 不要用 == 和 != (后者会自动转化类型)
        > 不要用eval(), 不要用eval(), 不要用eval(), 有安全漏洞
                > 解析json 请用 JSON 对象, ie 要引个包
            1
2
var jsonObj = JSON.stringify(jsonString);
var jsonString= JSON.parse(jsonObj);
                > setTimeout() 和 setInterval() 不要用 字符串, 会调用eval()
            1
2
3
4
setTimeout("doSth()",100); // 不好的写法
setTimeout(function() { // 好的写法
    doSth();
}, 100);
                > 仅仅在ajax解析返回值时可以用eval()













posted @ 2016-01-03 15:40  haili042  阅读(182)  评论(0编辑  收藏  举报