注释原则
- As short as possible(如无必要,勿增注释):尽量提高代码本身的清晰性、可读性。
- As long as necessary(如有必要,尽量详尽):合理的注释、空行排版等,可以让代码更易阅读、更具美感。
函数方法注释
123456789/*** 函数描述** @param {string} p1 参数1的说明* @param {string} p2 参数2的说明,比较长* 那就换行了.* @param {number=} p3 参数3的说明(可选)* @return {Object} 返回值描述*/
文件注释
123456/*** @fileoverview Description of file, its uses and information* about its dependencies.* @author user@meizu.com (Firstname Lastname)* Copyright 2009 Meizu Inc. All Rights Reserved.*/
命名
- 变量,使用 Camel 命名法。 var loadingModules = { } ;
- 私有属性、变量和方法以下划线 _ 开头。
- 常量,使用全部字母大写,单词间下划线分隔的命名方式。
- 函数、函数的方法,使用 Camel 命名法。
- 类、类的方法/属性,使用 Pascal 命名法。
- 枚举变量,使用 Pascal 命名法。枚举的属性,使用全部字母大写,单词间下划线分隔的命名方式。
- 由多个单词组成的缩写词,在命名中,根据当前命名法和出现的位置,所有字母的大小写与首字母的大小写保持一致。
- 命名语法: 类名使用名词,函数名使用动宾短语,boolean 类型的变量使用 is 或 has 开头 ,Promise 对象用动宾短语的进行时表达。
不要在 Array 上使用 for-in 循环。
二元和三元操作符
- 操作符始终写在前一行,以免分号的隐式插入产生预想不到的问题。
三元操作符用于替代 if 条件判断语句。
123456789// Not recommendedif (val != 0) {return foo();} else {return bar();}// Recommendedreturn val ? foo() : bar();
&& 和 ||
二元布尔操作符是可短路的, 只有在必要时才会计算到最后一项。
1234567891011121314151617181920212223242526272829// Not recommendedfunction foo(opt_win) {var win;if (opt_win) {win = opt_win;} else {win = window;}// ...................}if (node) {if (node.kids) {if (node.kids[index]) {foo(node.kids[index]);}}}// Recommendedfunctionfoo(opt_win) {var win = opt_win || window;// ...................}var kid = node && node.kids && node.kids[index];if (kid) {foo(kid);}
参考资料:
前端开发规范手册JavaScript