版本

no-native-reassign

禁止賦值給原生物件或唯讀全域變數

重要

此規則已在 ESLint v3.3.0 中棄用。請將此規則替換為 no-global-assign

瞭解更多

JavaScript 環境包含許多內建的全域變數,例如瀏覽器中的 window 和 Node.js 中的 process。在幾乎所有情況下,您都不會想要賦值給這些全域變數,因為這樣做可能會導致失去對重要功能的存取權。例如,您可能不希望在瀏覽器程式碼中執行以下操作:

window = {};

雖然像 window 這樣的例子很明顯,但 JavaScript 環境通常提供數百個內建的全域物件。可能很難知道您是否正在賦值給全域變數。

規則詳情

此規則禁止修改唯讀全域變數。

ESLint 能夠將全域變數設定為唯讀。

另請參閱:指定全域變數

此規則的錯誤程式碼範例

在 Playground 中開啟
/*eslint no-native-reassign: "error"*/

Object = null
undefined = 1
在 Playground 中開啟
/*eslint no-native-reassign: "error"*/
/*global window:readonly*/

window = {}

此規則的正確程式碼範例

在 Playground 中開啟
/*eslint no-native-reassign: "error"*/

a = 1
var b = 1
b = 2
在 Playground 中開啟
/*eslint no-native-reassign: "error"*/
/*global onload:writable*/

onload = function() {}

選項

此規則接受 exceptions 選項,可用於指定允許重新賦值的內建物件清單

{
    "rules": {
        "no-native-reassign": ["error", {"exceptions": ["Object"]}]
    }
}

何時不該使用

如果您嘗試覆寫其中一個原生物件。

版本

此規則在 ESLint v0.0.9 中引入。

資源

變更語言