javascript
    1.缩进,分号,单行长度
    一律使用4个空格
    连续缩进 同样适用4个空格,跟上一行对齐
    单行长度,理论上不要超过80列,保证可读性。
    接上一条,如果需要换行,存在操作符的情况,一定在操作符后换行,然后换的行缩进4个空格
    if (typeof find === “undefined” ||
    typeof find.cdnrejected === “undefined” ||
    find.cdnrejected !== true) {
    url = “http://www.xxxxx.com“;
    } else {
    url = “http://www.xxxxx.com“;
    }
    2.空行、空格
    方法之间加空行
    单行或多行注释前加空行
    等号两边加空格
    逻辑块之间加空行增加可读性
    var selectItem = function() {
    // 方法之间加空行
    }

    // 这是逻辑块,和上一个代码块之间加空行
    if (to8to_uid = 4655) {
    }
    3.命名规范
    标准变量和函数名采用标准驼峰命名法(除了第一个单词的首字母以外,组成标识符的每个单词的首字符,均大写)
    // 变量名
    var thisVarName = ‘to8to’;

    // 函数名
    function thisIsFuncName() {
    }
    变量/属性命名: 名词开头 函数/方法: 动词开头
    常量命名:字母全部大写,如果出现多个单词组合,使用下划线分割
    var NAME = “我是”;
    var TO8TO_CONFIG = “孤单的旅人”
    构造函数 函数名称: 首字母大写,同时遵循小驼峰(所有单词首字母都大写)
    function ThisIsClassName() {
    this.name = ‘xxxx’;
    this.domain = ‘http://www.xxxxx.com‘;
    }
    所有函数内变量声明放在函数内头部,只使用一个 var(多了JSLint报错), 一个变量一行, 在行末跟注释
    function doSomethingWithItems(items) {

    var value = 10, // 注释啊,注释啊,亲
    result = value + 10, // 注释啊,注释啊
    i, // 注释啊,注释啊,亲
    len; // 注释啊,注释啊,亲

    for (i=0, len=items.length; i < len; i++) {
    doSomething(items[i]);
    }
    }
    4.代码注释
    单行注释:双斜线后,必须跟注释内容保留一个空格
    // Good
    if (condition) {

    // 这是注释
    to8to();
    }

    var to8to = “to8to”; // 双斜线距离分号四个空格,双斜线后始终保留一个空格
    多行注释:最少三行,前边留空一行
    /*

    • 注释内容与星标前保留一个空格
      /
      文档注释:使用JSdoc风格,参考 http://usejsdoc.org/
      /*

    • @method get

    • @description 获取cookie值

    • @param name cookie名

    • @param options

    • @returns {|same}
      /
      Cookie.get = function (name, options) {
      validateCookieName(name);
      if (typeof options === “function”) {
      options = {
      converter: options
      };
      } else {
      options = options || {};
      }
      var cookies = parseCookieString(document.cookie, !options[“raw”]);
      return (options.converter || same)(cookies[name]);
      };
      5.括号对齐
      标准示例 括号前后有空格, 花括号起始 不另换行,结尾新起一行
      花括号必须要, 即使内容只有一行
      涉及 if for while do…while try…catch…finally 的地方都必须使用花括号
      // Good
      if (condition) {
      doSomething();
      }

    if (condition)
    doSomething();
    doSomethingElse();
    6.数组与对象
    for in 不要用在遍历Array上,应该用在遍历Object。
    // 遍历数组应该用数组长度而不是for in
    var arr = [‘1’, ‘2’, ‘3’];
    // bad
    for (i in arr) {
    console.log(i, arr[i]);
    }

    // good
    var arrLen = arr.length;
    for (i = 0; i < arrLen; i++) {
    console.log(i, arr[i]);
    }

    // 遍历object用for in
    var obj = {name: ‘xxxx’, domain: ‘xxxx.com‘};
    for (k in obj) {
    console.log(k, obj[k]);
    }
    关联数组或hash使用Object实现而不是使用Array。
    创建Object和Array应该使用字面量创建。
    // bad
    var newArr = new Array();
    var newObj = new Object();

    // good
    var newArr = [];
    var newObj = {};
    7.其他注意事项
    任何情况下记得使用分号结尾。
    代码块中不允许使用函数声明形式,但是可以采用另外的方法。
    // error
    if (x) {
    function getIt() {}
    }

    // 可以这样
    if (x) {
    var getIt = function() {};
    }
    非特殊情况禁止使用with和eval。
    多行的字符串字面量应该用’+’进行拼接而不是使用换行’’。
    // bad
    var str = ‘wefwef
    wefwef
    wefwef
    wefwef’;
    // good
    var str = ‘’;
    str += ‘wefwef’;
    str += ‘wefwef’;
    str += ‘wefwef’;
    str += ‘wefwef’;
    不要改变内置对象的prototype。
    // bad
    String.prototype.trim = function() {
    var res = /^\s/;
    var value = this;
    value = value.replace(res, ‘’);
    res = /\s
    $/;
    return value.replace(res, ‘’);
    }

    // good
    var util = util || {};
    util.trim = function(str) {
    var res = /^\s/;
    str = str.replace(res, ‘’);
    res = /\s
    $/;
    return str.replace(res, ‘’);
    }
    不要在如delete,typeof,void或是return,throw后面添加使用括号(Parentheses)。
    // bad
    delete(to8to_uid);
    tyoeof(to8to_uid) !== ‘undefined’;
    return(to8to_uid);

    // good
    delete to8to_uid;
    typeof to8to_uid !== ‘undefined’;
    return to8to_uid;
    自定义的toString方法必须保证1.正确性;2.没有副作用;否则很容易在assert时出错。