---
# System prepended metadata

title: Strict 嚴格模式
tags: [Javascript]

---

# Strict 嚴格模式
###### tags: `Javascript`
嚴格模式要求開發者以更正規的方式進行開發，開啟嚴格模式後將帶來以下改變。
1. 顯示原本被隱藏的錯誤。
2. 修正阻礙Javascript引擎進行最佳化的錯誤。
   (相同程式碼在嚴格模式下，有時能運行的比一般模式來的快)
4. 禁止使用可能被ES未來版本定義的語法。
:::danger
警告：並非所有瀏覽器都支援嚴格模式，若不支援仍會忽略且正常執行。
:::
## Why
Javascript相較於其他語言來說非常不嚴謹，以致於開發者可以使用這些不嚴謹的語法進行開發，然而這些語法將可能在未來帶來錯誤，以嚴格模式開發則可以避免上述情況發生，以下將列舉五點於嚴格模式中被禁止的狀況作為範例說明。
1. 禁止直接定義未宣告的變量。
2. 禁止使用delete。
3. 禁止宣告eval、arguments。
4. 禁止使用this指向全域。
5. 禁止重複變數
## How
全域
```javascript!
<script>
    
'use strict';
...
    
</script>
```
局域
```javascript!
<script>
    function name(){
    
        'use strict';
        ...
        
    }
</script>
```
## When
使用嚴格模式將對開發模式帶來極大的改變，==因此只建議於新專案中使用==，否則將有可能導致專案無法運作。