一、tab缩进
二、分号
三、括号
function test() { ... }
错误书写:
function test() { ... }
2、调用函数时函数名和左括号之前没有空格,声明函数时函数名与参数之间没有空格,匿名函数'function'与左括号之间没有空格,其它情况,其它语法元素和左括号之间有一个空格
正确书写:
test(a, b); function test(a, b) { ... } Test.prototype.getName = function() { ... };
错误书写:
test (a, b); return(a+b); if(a === b) { ... } function test (a, b) { ... } Test.prototype.getName = function () { ... };
四、引号
Javascript中单引号和双引号没有什么语义区别,BYVoid在《Node.js开发指南》中建议使用单引号,“因为JSON、XML都规定了必须是双引号,这样便于无转义地直接引用”
五、变量、属性、常量、类
1、变量、属性命名使用小驼峰命名法
正确命名:
var testName = 'test';
错误命名:
var TestName = 'test'; var test_name = 'test';
2、确保每个语句定义一个变量,不用逗号隔开
正确命名:
var test; var temp;
错误命名:
var test, temp;
3、避免使用全局变量,使用 "var" 定义变量,因为没写 "var" 隐式定义是全局变量,可能会和现有变量冲突,也不明白变量的作用域是什么。若使用全局变量用大写字母、单词以"_"分割表示,比如 "TEST_NAME = 'test'"
4、常量也使用全大写、单词以 "_" 分割命名方法,比如 "TEST_URL = 'http://www.test.com/test'"
5、普通的函数命名使用小驼峰命名,但是类要用大驼峰命名法;规定函数名与参数之前无空格,参数表和大括号之前要有一个空格,并在同一行
正确书写:
function Test() { this.name = 'test'; } function testFunction() { return 'test'; }
错误书写:
function test_function() { return 'test'; } function test() { this.name = 'test'; }
六、等号
使用 '===' 而不是 '==',因为 '==' 包含隐式转换,会出现预想不到的结果
var num1 = 1; var num2 = '1'; if (num1 == num2) { console.log('true'); } else { console.log('false'); }
以上代码将输出 'true',若把 '==' 改为 '===',输出 'false'
七、区块
建议总是使用大括号表示块
建议书写:
if (true) { console.log('true'); }
不建议书写:
if (true) console.log('true');
八、对象定义
成员函数通过原型定义,属性在构造函数内定义
正确书写:
function Person(name) { this.name = name; this.friends = ['Tom', 'Jack', 'Mike']; } Person.prototype.output = function() { console.log(this.friends); };
错误书写:
function Person(name) { this.name = name; this.output = function() { console.log(this.friends); }; } Person.prototype.friends = ['Tom', 'Jack', 'Mike'];
九、继承
不推荐继承,若需要继承用成熟的类库继承
有什么建议或者有什么错误,欢迎指出!
参考资料
1、http://www.ruanyifeng.com/blog/2012/04/javascript_programming_style.html
2、http://www.cnblogs.com/hustskyking/p/javascript-spec.html
3、http://alloyteam.github.io/JX/doc/specification/google-javascript.xml
4、《Node.js开发指南》