JavaScript规范

原则

  • as short as possible(如无必要,勿增注释):尽量保持代码本身的清晰性可读性
  • as long as necessary(如有必要,尽量详细):合理的注释、空行排版等,可以让代码更易阅读、更具美感。

1. JavaScript命名规范

  • 变量使用驼峰命名方式(Camel)

    • var userName = {};
  • 私有属性、变量和方法都以_下划线命名

    • var _privateMethod = {};
  • 常量全部使用大写字母,单词间下划线分割的方式命名

    • var PI_PI = 3.14;
  • 函数名使用驼峰命名

  • 函数参数使用驼峰命名

    function formateString(oldString) {
         
    }
    
  • 使用帕斯卡命名法(Pascal)

  • 类的属性和方法,使用驼峰命名法

    function OldPerson(oldName, newName){
       this.oldName = oldName;
       this.newName = newName;  
    }
    
  • 枚举变量使用帕斯卡命名法

  • 枚举的属性,全部使用大写字母,单词间下划线分割的命名法

  • 由多个单词组成的缩写词,在命名中,根据当前命名法和出现的位置,所有字母的大小写与首字母的大小写保持一致。

    function XMLParser() {}
    function insertHTML(element, html) {}
    var httpRequest = new HTTPRequest();
    

命名的词法

  • 类名,使用名词
    • var name = "";
  • 函数名,使用动宾结构
    • function getName(){}
  • boolean类型的变量,使用is或者has开头。
    var isReady = false;
    var hasApple = true;
    
  • Promise对象用动宾短语的进行时表达
    var loadingData = ajax.get('url');
    loadingData.then(callback);
    

接口命名规范

  • 可读性强
  • 尽量不与 jQuery 社区已有的习惯冲突
  • 尽量写全。不用缩写,除非是下面列表中约定的;(变量以表达清楚为目标,uglify 会完成压缩体积工作)
  1. 排版缩进采用统一的缩进方式排版代码。缩进为2个空格。
If(condition1 || condition2) {
  action1;
} else if (condition3 && condition4) {
  action2;
} else if (condition5
        && condition6
        && condition7
        && condition8) {
  action2;
} else {
  default action;
}
  1. 关键词、条件括弧后面使用空格;运算操作符号两侧使用空格;语句分割符‘,’后面使用空格;
var name[空格]=[空格]value;
  if[空格](a,[空格]b) {
}
  1. 左大括号"{"可以居行尾,右大括号"}"单独占一行,居行首
if (a && b) {
}
  1. 句末必须使用分好结尾;
var fn = function () {
};//这里没有分号的话,脚本解析器会报错!!!
(function () {
    alert(1);
})();
  1. if、while、for、do语句的执行体总是用"{"和"}"括起来

总是使用 var 来声明变量。
如不指定 var,变量将被隐式地声明为全局变量,这将对变量难以控制。
如果没有声明,变量处于什么定义域就变得不清(可以是在 Document 或 Window 中,也可以很容易地进入本地定义域);
变量声明可以只用一个 var 关键字声明,多个变量用逗号隔开;
赋值尽量写在变量声明当中。
使用 === 精确的比较操作符,避免在判断的过程中,由 JavaScript 的强制类型转换所造成的错误(比较的双方必须是同一类型才会有效);
在用if作判断的时候,下列表达式统统返回 false:false, 0, undefined, null, NaN, ''(空字符串).
统一使用单引号(‘),不使用双引号(“)。这在创建 HTML 字符串非常容易辨别;

true和false布尔表达式

  • 类型检测优先使用 typeof
  • 对象类型检测使用 instanceof
  • null 和 undefined的检测使用 == null
运算式 返回值
null false
undefined false
''(空字符串) false
数字0 false
"0" true
[] true
{} true
undefined == null true
[] == [] false

不要在Array上使用for-in循环

for-in 循环只用于object/map/hash循环,
因为for-in循环不是从0到length-1进行遍历的,它遍历的是所有出现在对象和原型链上的key

二元和三元操作符

  • 操作符始终写在前一行,避免分号隐式插入产生问题
  • 三元操作符用于代替if操作

&&和||
二元操作符是可短路的,只有在必要的时候才会计算到最后一项。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章