## 分號
分號表示語句的結束。大多數情況下,如果你省略了句尾的分號,Javascript會自動添加。
> **不要省略句末的分號。**
## with語句
with可以減少代碼的書寫,但是會造成混淆。
> **不要使用with語句。**
## 相等和嚴格相等
Javascript有兩個表示"相等"的運算符:"相等"(==)和"嚴格相等"(===)。
> **不要使用"相等"(==)運算符,只使用"嚴格相等"(===)運算符。**
## 全局變量
Javascript最大的語法缺點,可能就是全局變量對于任何一個代碼塊,都是可讀可寫。這對代碼的模塊化和重復使用,非常不利。
>**避免使用全局變量;如果不得不使用,用大寫字母表示變量名,比如UPPER_CASE。**
## Javascript會自動將變量聲明"提升"(hoist)到代碼塊(block)的頭部。
> **所有變量聲明都放在函數的頭部。
規則10:所有函數都在使用之前定義。**
## 自增和自減運算符
自增(++)和自減(--)運算符,放在變量的前面或后面,返回的值不一樣,很容易發生錯誤。
事實上,所有的++運算符都可以用"+= 1"代替。
>**不要使用自增(++)和自減(--)運算符,用+=和-=代替。**
## 區塊
如果循環和判斷的代碼體只有一行,Javascript允許該區塊(block)省略大括號。
>**總是使用大括號表示區塊。**
## new命令
Javascript使用new命令,從建構函數生成一個新對象。
```js
var o = new myObject();
```
這種做法的問題是,一旦你忘了加上new,myObject()內部的this關鍵字就會指向全局對象,導致所有綁定在this上面的變量,都變成全部變量。
如果不得不使用new,為了防止出錯,最好在視覺上把建構函數與其他函數區分開來。
>**不要使用new命令,改用Object.create()命令。
建構函數的函數名,采用首字母大寫(InitialCap);其他函數名,一律首字母小寫。**