修正版本 2.28
原文:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml
Bob Jervis
Dan Pupius
Eric Arvidsson
Fritz Schneider
Robby Walker
每个风格点都有一个展开/收起按钮以便你可以得到更多的信息:▶. 你可以将全部展开或收起:
▶ 全部展开/全部收起
内容树
背景
JavaScript是一门客户端脚本语言,Google经常用它来晒优越,本文档列出了一些在做JS项目时需要注意的地方。都是高富帅整理的,还望各位屌丝们有时间都好好看看多学学,别对这个世界太消极了!(译者注:所谓的客户端呢就是浏览器或本地软件环境,市面上所有的浏览器都支持JS,JS发展到现在统一WEB端再进军移动互联网后,相信在一段时间内都是不可被轻易替代的语言,所以有兴趣的同学们可以多关注一下)
JavaScript语言规范
变量(var)
▶每个变量声明都要加上var关键字噢。
常量
▶常量命名用类似NAMES_LIKE_THIS这样的形式。没事干了可以用@const来标记它是常量,但永远不要用const关键字来进行常量声明。
分号
▶ 每一语句的结尾都要加上分号噢。嵌套函数
▶ 可以使用,木有问题。块内函数声明
▶ 呀咩嗲。异常处理
▶支持合理使用。自定义异常
▶支持合理使用。标准特性
▶ 总是优越于非标准特性之上。基本包装类型
▶ 主动 new 基本包装类型(Boolean/Number/String)的人儿永远也成不了高富帅!多级原型结构
▶不是怎么推荐使用。
方法定义
▶Foo.prototype.bar = function() { ... };
闭包
▶上古之大杀器,顺则飞龙在天,滥则亢龙有悔。
eval()
▶只用于反序列化。(反序列化的意思是从字节流中重构对象,这里指的应该是JSON字符串重构成对象,或是执行服务器返回的JS语句)
with() {}
▶ 别用。this
▶仅在构造函数,方法,闭包中去使用它。
for-in 循环
▶只在 object/map/hash 要遍历键值的时候使用。
关联数组
▶永远不要用 Array 去做 map/hash/associative 要做的事情。
多行字符串字面量
▶ 不要!Array和Object字面量
▶ 推荐使用。修改内置对象的原型
▶ 别这样做。IE下的条件注释
▶ 别用。JavaScript代码风格规范
命名
▶通常,使用类似于 functionNamesLikeThis, variableNamesLikeThis, ClassNamesLikeThis, EnumNamesLikeThis, methodNamesLikeThis, 和 SYMBOLIC_CONSTANTS_LIKE_THIS 这样的命名方式(驼峰式)
自定义 toString() 方法
▶应该总是成功调用,无副作用。
延迟初始化
▶ 可以。明确作用域
▶始终需要明确。
代码格式化
▶ 一两句话说不明白,展开了详细讨论括号
▶只在需要的时候使用。
字符串
▶单引号(')比双引号(")更好。
可见性(私有和受保护的字段)
▶鼓励使用JSDoc中的 @private 和 @protected
进行标注。JavaScript类型
▶强烈建议使用编译器。
注释
▶使用 JSDoc
内部类和枚举
▶内部类和枚举的定义应和顶级类放在同一文件内。只需要声明顶级类。
编译压缩
▶ 推荐使用。提示和技巧
▶JavaScript 习习更健康。
吐槽部分
坚持一致原则。
如果你要编辑代码,先花几分钟看看它的代码风格,如果它这么做,那你也应该这么做。
风格统一了,就有了一个共同思维的环境,参与者就可以专注的看你要说什么,而不是先想你是在说哪星球的语言。 虽然我们在这里提出统一样式规则,但就只是想让大家都知晓并借鉴而对自己的风格进行修正。 当然,保持自己独有的风格也是很重要的。balabala……
修正版本 2.28
译者:chajn新浪微博:@chajn
于 2012-05-18
那个苦逼的下午
特别感谢@教主@三水清@不晓得V给予的技术支持