noParameterAssign (since v12.0.0)
This rule is recommended by Rome.
Disallow reassigning function
parameters.
Assignment to a function
parameters can be misleading and confusing, as modifying parameters will also mutate the arguments
object. It is often unintended and indicative of a programmer error.
Source: https://eslint.org/docs/latest/rules/no-param-reassign
In contrast to the ESLint rule, this rule cannot be configured to report assignments to a property of a parameter.
Examples
Invalid
function f(param) {
param = 13;
}
style/noParameterAssign.js:2:5 lint/style/noParameterAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Reassigning a function parameter is confusing.
1 │ function f(param) {
> 2 │ param = 13;
│ ^^^^^
3 │ }
4 │
ℹ The parameter is declared here:
> 1 │ function f(param) {
│ ^^^^^
2 │ param = 13;
3 │ }
ℹ Use a local variable instead.
function f(param) {
param++;
}
style/noParameterAssign.js:2:5 lint/style/noParameterAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Reassigning a function parameter is confusing.
1 │ function f(param) {
> 2 │ param++;
│ ^^^^^
3 │ }
4 │
ℹ The parameter is declared here:
> 1 │ function f(param) {
│ ^^^^^
2 │ param++;
3 │ }
ℹ Use a local variable instead.
function f(param) {
for (param of arr) {}
}
style/noParameterAssign.js:2:10 lint/style/noParameterAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Reassigning a function parameter is confusing.
1 │ function f(param) {
> 2 │ for (param of arr) {}
│ ^^^^^
3 │ }
4 │
ℹ The parameter is declared here:
> 1 │ function f(param) {
│ ^^^^^
2 │ for (param of arr) {}
3 │ }
ℹ Use a local variable instead.
class C {
constructor(readonly prop: number) {
prop++
}
}
style/noParameterAssign.js:3:9 lint/style/noParameterAssign ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Reassigning a function parameter is confusing.
1 │ class C {
2 │ constructor(readonly prop: number) {
> 3 │ prop++
│ ^^^^
4 │ }
5 │ }
ℹ The parameter is declared here:
1 │ class C {
> 2 │ constructor(readonly prop: number) {
│ ^^^^^^^^^^^^
3 │ prop++
4 │ }
ℹ Use a local variable instead.
Valid
function f(param) {
let local = param;
}