1

基本格式

  1. 使用4个空格字符作为一个缩进层级,(记得配置编辑器)。
  2. 不要省略分号。
  3. 行的长度限定在80个字符。
  4. 长度超过限制时,选择在运算符之后换行,下一行需要两个层级的缩进。例外,变量赋值以及变量声明时,第二行应当和赋值运算符或第一个变量保持对齐。
  5. 适当的增加空行:

    • 在方法之前。
    • 在方法的局部变量和第一条语句之间。
    • 在多行或单行注释之前。
    • 在方法内的逻辑片段之间插入空行,提高可读性。
  6. 变量和函数命名,统一使用小驼峰式大小写,即首字母小写,后续每个单词首字母都大写。对于构造函数,使用大驼峰式大小写。匈牙利命名,如sName表示字符串,iCount表示整数,不推荐使用。
  7. 推荐的命名方式

    • 变量的命名应当是名词。
    • 函数和方法的前缀应当是动词。
    • 构造函数的命名应当是名词。
    • 一些常见动词的约定:
动词 含义
can 函数返回一个布尔值
has 函数返回一个布尔值
is 函数返回一个布尔值
get 函数返回一个非布尔值
set 函数用来保存一个值
  1. 常量,使用大写字母和下划线来命名,下划线用以分隔单词。
  2. 引号的使用,字符串,倾向于使用单引号,并始终保持这个风格。
  3. null 的使用场景为,期望是对象的变量,参数,返回值,把它当作对象的占位符。
  4. 变量在声明时即赋予初始值。undefined的问题见下:
jsvar b;
console.log(b)               //  undefined
console.log(typeof b);       // 'undefined'

console.log(c)               //  报错
console.log(typeof c)        // 'undefined'

var a = {};
console.log(a.aaa)           //  undefined
console.log(typeof a.aaa);   // 'undefined'

console.log(d.aaa)           //  报错
console.log(typeof d.aaa);   //  报错

  1. 对象和数组使用直接量进行定义。
jsvar obj = {
    a: "a"
}
var arr = ["a","b","c"];

注释

  1. 单行注释

    • 用来解释下一行代码。请在这行注释之前插入一个空行,且缩进层级和下一行代码保持一致。
    • 在代码行尾部的注释。代码结束到注释之间至少由一个缩进。该行不要超过最大字符限制,若超过请放置于该行上方。
    • 注释大段的代码。
  2. 多行注释

    • 风格如下:
    js/*
     * 我是注释
     * 另一段注释
     */
    
    • 与单行注释一样,注释之前有一个空行。
    • 缩进与下一行代码一致。
  3. 使用注释

    • 难以理解的代码
    • 可能被误以为错误的代码
    • 浏览器特性Hack

语句和表达式

  1. 所有的块语句都应该使用花括号。

    • if
    • for
    • while
    • do...while...
    • try...catch...finally
  2. 花括号的对齐规范

js// 推荐
if(condition) {
    doSomething();
} else {
    doSomethingElse();
}

// 禁止,以免导致错误的分号自动插入。
if (condition)
{
    doSomething();
}
else
{
    doSomethingElse();
}
  1. 块语句间隔,推荐使用Google JavaScript风格。

    • Dojo 风格
    jsif(condition){
        doSomething();
    }
    
    • Google JavaScript 风格
    jsif (condition) {
        doSomething();
    }
    
    • jQuery 风格
    jsif ( condition ) {
        doSomething();
    }
    
  2. 此处省略了switch for的使用规范

  3. for-in 使用规范

    • for-in 循环必须使用 hasOwnProperty()
    • 除非你要查找原型链,但必须补充注释。
    • 不可用于遍历数组,数组必须使用for。

变量、函数和运算符

  • js会将变量声明提前,因此在函数内部任意地方定义变量和在函数顶部定义变量是完全一样的。
    尤其是js没有块级作用域,需注意。推荐做法是,有意识地将声明提升到函数块的顶部来做。
  • 函数声明同样也会被js提前。推荐做法是,先声明后使用。
  • 不可在条件语句中使用函数声明。
  • 严格模式,"use strict"; 不要将该指令写到全局中,而是写在函数块内。
  • 始终使用 === 和 !== 。
  • 禁止使用 eval() ,唯一例外:涉及到回调中解析JSON的情形。
  • 禁止使用原始包装类型(String,Boolean,Number)

郑洋葱
312 声望13 粉丝

前端开发喵


« 上一篇
编程实践