<<编写可维护的javascript>> part1: 编程风格
chapter1 基本格式
- 缩进
> tab or 2空格 or 4空格
chapter2 注释
- 单行注释
- 语句结尾
> 语句记得加";"
> 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()