1、总是使用var声明变量。如function fun() { var i = 0; }等,否则变量i会变成全局变量;
2、常量使用诸如NAME_LIKE_THIS进行命名;
3、ECMAScript建议使用块声明函数,因为ECMAScript只允许在根语句(如<script></script>中)声明函数,如
if(x) {
var i = function() {...};
}
而非使用
if(x) {
function() {...}
}
4、避免使用包装类型声明原始的数据类型
较好的方式: var x = Boolean(0); if (x) { alert('hi'); // This will never be alerted. }
较差的方式: var x = new Boolean(false); 因为false是一个对象,对象转换成boolean型数据时,会转换成true,除了null和undefied对象之外。 if (x) { alert('hi'); // Shows 'hi'. }
5、尽量避免使用delete删除对象的属性,使用赋null的方式,因为使用重新分配值的方式性能较快,同时使用delete需要避免操作工程中出现异常
较好的实现方式: Foo.prototype.dispose = function() { this.property_ = null; };
较差的实现方式: Foo.prototype.dispose = function() { delete this.property_; };
6、尽量避免使用eval(),因为eval()容易造成语义混乱,建议使用JSON代替
{ "name": "Alice", "id": 31502, "email": "looking_glass@example.com" }
var userInfo = eval(feed); var email = userInfo['email'];
var userInfo = JSON.parse(feed); var email = userInfo['email'];
7、尽量避免使用for-in进行循环,使用原生态的for(...;...;...)代替,因为for-in循环时会查询原型里的属性,速度慢;
8、构建数组对象时,尽量使用Object代替Array数组
var a1 = new Array(x1, x2, x3);
var a = [x1, x2, x3]; //使用Object构建数组对象
9、尽可能延迟变量的初始化(为变量赋值);
10、声明字符串时,使用'代替",方便对HTML进行声明;
文章载自:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml