## 分號
總是使用分號.
如果僅依靠語句間的隱式分隔, 有時會很麻煩. 你自己更能清楚哪里是語句的起止.
而且有些情況下, 漏掉分號會很危險:
```
// 1.
MyClass.prototype.myMethod = function() {
return 42;
} // No semicolon here.
(function() {
// Some initialization code wrapped in a function to create a scope for locals.
})();
var x = {
'i': 1,
'j': 2
} // No semicolon here.
// 2\. Trying to do one thing on Internet Explorer and another on Firefox.
// I know you'd never write code like this, but throw me a bone.
[normalVersion, ffVersion][isIE]();
var THINGS_TO_EAT = [apples, oysters, sprayOnCheese] // No semicolon here.
// 3\. conditional execution a la bash
-1 == resultOfOperation() || die();
```
這段代碼會發生些什么詭異事呢?
1. 報 JavaScript 錯誤 – 例子1上的語句會解釋成, 一個函數帶一匿名函數作為參數而被調用, 返回42后, 又一次被”調用”, 這就導致了錯誤.
2. 例子2中, 你很可能會在運行時遇到 ‘no such property in undefined’ 錯誤, 原因是代碼試圖這樣 `x[ffVersion][isIE]()` 執行.
3. 當 `resultOfOperation()` 返回非 NaN 時, 就會調用`die`, 其結果也會賦給 `THINGS_TO_EAT`.
為什么?
JavaScript 的語句以分號作為結束符, 除非可以非常準確推斷某結束位置才會省略分號. 上面的幾個例子產出錯誤, 均是在語句中聲明了函數/對象/數組直接量, 但
閉括號(‘}’或’]’)并不足以表示該語句的結束. 在 JavaScript 中, 只有當語句后的下一個符號是后綴或括號運算符時, 才會認為該語句的結束.
遺漏分號有時會出現很奇怪的結果, 所以確保語句以分號結束.