pve-eslint/eslint/docs/rules/no-native-reassign.md
Dominik Csapak eb39fafa4f first commit
includes a (minimal) working wrapper

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2020-04-06 15:06:03 +02:00

92 lines
2.1 KiB
Markdown

# Disallow Reassignment of Native Objects (no-native-reassign)
This rule was **deprecated** in ESLint v3.3.0 and replaced by the [no-global-assign](no-global-assign.md) rule.
JavaScript environments contain a number of built-in global variables, such as `window` in browsers and `process` in Node.js. In almost all cases, you don't want to assign a value to these global variables as doing so could result in losing access to important functionality. For example, you probably don't want to do this in browser code:
```js
window = {};
```
While examples such as `window` are obvious, there are often hundreds of built-in global objects provided by JavaScript environments. It can be hard to know if you're assigning to a global variable or not.
## Rule Details
This rule disallows modifications to read-only global variables.
ESLint has the capability to configure global variables as read-only.
* [Specifying Environments](../user-guide/configuring#specifying-environments)
* [Specifying Globals](../user-guide/configuring#specifying-globals)
Examples of **incorrect** code for this rule:
```js
/*eslint no-native-reassign: "error"*/
Object = null
undefined = 1
```
```js
/*eslint no-native-reassign: "error"*/
/*eslint-env browser*/
window = {}
length = 1
top = 1
```
```js
/*eslint no-native-reassign: "error"*/
/*global a:readonly*/
a = 1
```
Examples of **correct** code for this rule:
```js
/*eslint no-native-reassign: "error"*/
a = 1
var b = 1
b = 2
```
```js
/*eslint no-native-reassign: "error"*/
/*eslint-env browser*/
onload = function() {}
```
```js
/*eslint no-native-reassign: "error"*/
/*global a:writable*/
a = 1
```
## Options
This rule accepts an `exceptions` option, which can be used to specify a list of builtins for which reassignments will be allowed:
```json
{
"rules": {
"no-native-reassign": ["error", {"exceptions": ["Object"]}]
}
}
```
## When Not To Use It
If you are trying to override one of the native objects.
## Related Rules
* [no-extend-native](no-extend-native.md)
* [no-redeclare](no-redeclare.md)
* [no-shadow](no-shadow.md)