原则
- 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 会完成压缩体积工作)
- 排版缩进采用统一的缩进方式排版代码。缩进为2个空格。
If(condition1 || condition2) {
action1;
} else if (condition3 && condition4) {
action2;
} else if (condition5
&& condition6
&& condition7
&& condition8) {
action2;
} else {
default action;
}
- 关键词、条件括弧后面使用空格;运算操作符号两侧使用空格;语句分割符‘,’后面使用空格;
var name[空格]=[空格]value;
if[空格](a,[空格]b) {
}
- 左大括号"{"可以居行尾,右大括号"}"单独占一行,居行首
if (a && b) {
}
- 句末必须使用分好结尾;
var fn = function () {
};//这里没有分号的话,脚本解析器会报错!!!
(function () {
alert(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操作
&&和||
二元操作符是可短路的,只有在必要的时候才会计算到最后一项。
网友评论