全部的块语句都应当使用花括号。包括:数组
if函数
forcode
while对象
do…while…ip
try…catch…finally作用域
//很差的写法 if (condition) doSomethind(); //很差的写法 if (condition) doSomething(); //好的写法 if (condition) { doSomethind(); } //很差的写法 if (condition) { doSomething(); }
两种风格:第一种将花括号放置在块语句中第一行代码的末尾;第二种将左花括号放置于块语句首行的下一行。字符串
语句名、圆括号、和左花括号之间没有空格间隔it
if(condition){io
doSomething();
}console
在左圆括号以前和右圆括号以后各添加一个空格
if (codition) {
doSomething:
}
在左圆括号后和右圆括号前各添加一个空格
if ( condition ) {
doSomething();
}
我的比较喜欢第二种,易读但不是太麻烦。
缩进
Java风格:
switch (condition) { case "first": //code break; case "second": //code break; default: //code }
每条case语句相对于switch关键字都缩进一个层级
从第二条case语句开始,每条case语句先后都各有一个空行。
Dojo风格:
switch (condition) { case "first": //code break; case "second": //code break; default: //code }
default
不少人认为不论什么时候都不该当省略default,哪怕default什么都不作。
我的不太喜欢写。
我们就尽可能不要写with语句了。
最好使用hasOwnProperty()方法来为for-in循环过滤出实例属性。
var prop; for (prop in object) { if(object.hasOwnProperty(prop)) { console.log("..."); } }
不要把for-in用在数组的遍历上
//很差的写法 var vaules = [1, 2, 3], i; for (i in vaules) { process(item[i]); }
建议将局部变量的定义做为函数内第一条语句。
function doSomethingWithItems(items) { var i, len; var value = 10; var result = value + 10; for (i=0, len=items.length; i < len; i++) { doSomething(items[i]); } }
推荐先声明JavaScript函数而后使用函数。
function doSomething() { //code } doSomething();
此外,函数声明不该出如今语句块以内。
//很差的写法
if (condition) { function doSomething() { //code } } else { function doSomething() { //code } }
推荐风格:在函数名和左花括号之间没有空格。
//好的写法 doSomething(item); //很差的写法:看起来想一个块语句 doSomething (item);
匿名函数能够经过在最后加上一对圆括号来当即执行并返回一个值,而后将这个值赋值给变量。
// 很差的写法 var value = function() { // 函数体 return { message: "Hi" } }();
为了让当即执行的函数可以被一眼看出来,能够将函数用一对圆括号包裹起来。
// 好的写法 var value = (function() { // 函数体 return { message: "Hi" } }());
最好不要再全局做用域中使用"use strict"。
// 很差的写法 - 全局的严格模式 "use strict"; function doSomething() { // code } // 好的写法 function doSomething() { "use strict"; // code }
推荐不要使用 == 和 !=,而应当使用 === 和 !==。
通用原则:严禁使用Function,只在别无他法时使用eval()。setTimeout()和setInterval()也是可使用的,但不用字符串形式而要用函数。
ECMAScript 5 严格模式对于eval()有着严格的限制,禁止在一个封闭的做用域中使用它建立变量或者函数。
JavaScript里有三种原始包装类型:String、Boolean和Number。每种类型都表明全局做用域中的一个构造函数,并分别表示各自对用的原始值的对象。
// 很差的作法 var name = new String("Nicholas");