首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

no-param-reassign

赋值给声明为函数参数的变量可能会引起误解,并导致混淆行为,因为修改函数参数也会使arguments对象变异。通常,对函数参数的赋值是意想不到的,并且指示错误或程序员错误。

当修改功能参数时,也可以将此规则配置为失败。对参数的副作用会导致违反直觉的执行流程,并使错误难以追踪。

规则细节

这个规则旨在防止由功能参数的修改或重新分配引起的意外行为。

规则的错误代码示例:

代码语言:javascript
复制
/*eslint no-param-reassign: "error"*/

function foo(bar) {
    bar = 13;
}

function foo(bar) {
    bar++;
}

规则的正确代码示例:

代码语言:javascript
复制
/*eslint no-param-reassign: "error"*/

function foo(bar) {
    var baz = bar;
}

选项

规则采用一个选项,一个对象,一个布尔属性"props"和一个数组"ignorePropertyModificationsFor""props"false默认的。如果"props"设置为true,则此规则会警告修改参数属性,除非它们包含"ignorePropertyModificationsFor"在内,默认情况下这是一个空数组。

props

{ "props": false }默认选项的正确代码示例:

代码语言:javascript
复制
/*eslint no-param-reassign: ["error", { "props": false }]*/

function foo(bar) {
    bar.prop = "value";
}

function foo(bar) {
    delete bar.aaa;
}

function foo(bar) {
    bar.aaa++;
}

{ "props": true }选项的错误代码示例:

代码语言:javascript
复制
/*eslint no-param-reassign: ["error", { "props": true }]*/

function foo(bar) {
    bar.prop = "value";
}

function foo(bar) {
    delete bar.aaa;
}

function foo(bar) {
    bar.aaa++;
}

使用"ignorePropertyModificationsFor"设置{ "props": true }选项的正确代码示例:

代码语言:javascript
复制
/*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/

function foo(bar) {
    bar.prop = "value";
}

function foo(bar) {
    delete bar.aaa;
}

function foo(bar) {
    bar.aaa++;
}

何时不使用它

如果你想允许赋值给函数参数,那么你可以放心地禁用这个规则。

进一步阅读

扫码关注腾讯云开发者

领取腾讯云代金券