JavaScript 编码风格指南

A.1  缩进

//  4个空格的层级缩进
if (true) {
    doSomething();
}

A.2  行的长度

//  每行限于80个字符,超出则在运算符后换行,缩进2个层级(8个空格)
doSomething(argument1, argument2, argument3, argument4,
        argument5);

A.3  原始值

//  字符串使用双引号及长字符串的链接
var name = "Nicholas",
    longStr = "this is a long string you should " +
              "change another line.";

//  数字
var count = 10,
    price = 10.50,
    num = 1e10;

//  null,表示或期望是对象
var person = null; function getPerson () { if (condition) { return new Person("Nicholas"); } else { return null; } }

//  undefined  变量声明而未赋值的状态,避免使用;
var variable = undefined   //  dont do this
if (typeof variable === "undefined") { // do like this }

 A.4  运算符间距

//  运算符前后使用一个空格来保持表达式的整洁
var found = (value[i] === item);

if (found && (count > 10)) {
    doSomething();
}

for (i = 0; i < count; i++) {
    process(i);
}

A.5  对象直接量

//  层级缩进、语段前后空行、函数前后空行、属性不加引号、冒号紧跟其后
var object = {
    key1: value1,
    key2: value2,

    func: function () {
        // a function to do something
    },

    key3: value3
}

A.7  注释

//  单行注释1
if (condition) {
    
    //  如果代码执行到这里,表明通过了安全检查
    doSomething();
}

//  单行注释2
var result = result1 + result2;  //  result1, result2应当是整数

//  多行注释
function getResult (arg1, arg2) {

    /*
     *  @para arg1
     *  @para arg2
     */
    doSomething();
}

A.8  变量声明

//  整齐、未初始化变量放最后
var count = 10,
    name = "Nicholas",
    found = false,
    empty;

A.9  函数声明

//  标准式
function sum(arg1, arg2) {
    return arg1 + arg2;
}

//  道格拉斯推荐式(变量引用式)
var sum = function (arg1, arg2) {
    return arg1 + arg2;
};

//  立即调用式
var value= (function() {
    
    //  函数体

    return {
        message: "Hi"
    }; 
}());

A.10  命名

// 普通变量用小驼峰命名法,不要使用下划线,不要用动词开头
var accountNumber = "8341";

//  函数命名用动词开头表意
function getPerson() {
    // return a person object
}

// 构造函数用名词开头且首字母大写
function Person(name) {
    this.name = name;
}

// 常量
var TOTAL_COUNT = 10;

// 私有变量
var object = {
    _count: 10,

    getCount: function() {
        return this._count;
    }
};

 A.11  严格相等及表达式赋值

// 通过相等判断赋予布尔值
var flag = (a === b);

A.12  三元操作符

// 三元操作符应当仅仅用在条件赋值语句中
var value = (condition ? value1 : value2);

// dont do like this, do it use if instead
condition ? doSomething() : doSomethingElse();

A.13  语句示例

// if
if (condition) {
    statements
}

// for
var i, len;
for (i = 0, len = 10; i < len; i++) {
    // code
}

var prop;
for (prop in object) {

    if (object.hasOwnProperty(prop)) {
        // code
    }
}

// while
while (condition) {
    statements
}

// switch
switch (value) {
    case 1:
        statements;
        break;

    case 2:  // falls through
    case 3:
        statements;
        break;

    // no default
}

A.14  使用严格模式吧,在一个函数里

(function() {
    "use strict";

    //  code
}());

 

 

posted @ 2014-05-27 21:55  farawayfromhome  阅读(294)  评论(0编辑  收藏  举报