一.基本格式缩进 建议每级4个空格,可以给编辑器设置tab = 4个空格,自动转换 分号 不要省略分号,防止ASI(自动插入分号)错误 行宽 每行代码不超过80个字符,过长应该用操作符手动断行 断行 操作符在上一行末尾,且下一行缩进2级,如果是赋值语句,还应该和等号后面部分对齐 空行 函数声明与函数声明、变量声明与函数声明、函数内部的逻辑块之间都应该有空行隔开 作者尼古拉斯还建议在流程控制块顶部留一个空行,但给的例子不是很明确 命名
字面量
二.注释P.S.书中有一句非常经典的解释:
单行注释
多行注释 用来包裹大段注释,推荐Eclipse风格,例如 /* * comment line1 * comment line2 */ 注意:
在哪里添注释
文档注释 应该给各个函数添注释,包括功能描述、参数、返回值、抛出的错误等等,例如推荐的Eclipse风格: /** * 添加指定元素到默认数组 * * @method add * @param {Number} 将要添加的元素 * @return {Boolean} 添加成功/失败 * @throw {TypeError} 参数类型不匹配 */ function add(item){ if(typeof item === "number"){ arr.push(item) } else{ throw new TypeError(); } } 三.语句和表达式花括号对齐方式 建议行尾风格,不推荐次行风格 块语句空格 if后的圆括号部分前后各有一个空格,例如: if (expr) { code } switch语句
P.S.《JavaScript语言精粹》的作者道格拉斯认为不应该用case贯穿(称之为鸡肋),因为极易引发bug,而尼古拉斯认为用空行或者注释说明就好了 with语句 不用 for循环 所有变量都应该在函数体顶部声明,包括for循环初始化部分用到的变量,避免hosting(提升)引发bug(可能会屏蔽全局变量) for-in循环 不要用来遍历数组,用的时候记得加上hasOwnProperty过滤,如果故意遍历原型属性,应该用注释说明 四.变量、函数、操作符变量声明 函数体 = 变量声明 + 函数声明 + 逻辑语句。用空行隔开各个部分 函数声明 先声明再使用,千万不要把函数声明放在if分支里,因为浏览器理解不同,而且ES没给标准 函数调用 圆括号前后都不加空格,避免和块语句混淆 匿名函数立即执行 把立即执行的匿名函数用圆括号包裹,避免与匿名函数声明混淆 严格模式 不要在全局作用域开严格模式,只在函数内部开,给多个函数开可以用匿名函数立即执行限定严格模式的作用域 判断等于 只用===和!== eval 不用eval()和new Function(),用匿名函数优化setTimeout()和setInterval() 基本包装类型 不要用new Boolean(), new String(), new Number() 参考资料
|