“strict mode” 是一種更加嚴格的代碼檢查機制,并且會讓你的代碼更加安全。當然,不選擇這個模式并不意味著是一個錯誤,但是使用這個模式可以確保你的代碼更加準確無誤。
下面我們總結幾條“strict mode”的優勢:
1. 讓Debug更加容易:在正常模式下很多錯誤都會被忽視掉,“strict mode”模式會讓Debug極致更加嚴謹。
2. 防止默認的全局變量:在正常模式下,給一個為經過聲明的變量命名將會將這個變量自動設置為全局變量。在strict模式下,我們取消了這個默認機制。
3. 取消this的默認轉換:在正常模式下,給this關鍵字指引到null或者undefined會讓它自動轉換為全局。在strict模式下,我們取消了這個默認機制。
4. 防止重復的變量聲明和參數聲明:在strict模式下進行重復的變量聲明會被抱錯,如 (e.g., var object = {foo: "bar", foo: "baz"};) 同時,在函數聲明中重復使用同一個參數名稱也會報錯,如 (e.g., function foo(val1, val2, val1){}),
5. 讓eval()函數更加安全。
6. 當遇到無效的delete指令的事后報錯:delete指令不能對類中未有的屬性執行,在正常情況下這種情況只是默默地忽視掉,而在strict模式是會報錯的。