no-return-assign
禁止在 return
语句中使用赋值运算符
JavaScript 有趣且有时令人困惑的方面之一是赋值几乎可以在任何地方发生。 因此,一个错误的等号最终可能导致赋值,而真正的意图是进行比较。 当使用 return
语句时尤其如此。 例如
function doSomething() {
return foo = bar + 2;
}
这里很难判断 return
语句的意图。 函数可能旨在返回 bar + 2
的结果,但为什么要赋值给 foo
呢? 也有可能意图是使用比较运算符(例如 ==
),而这段代码是错误的。
由于这种歧义,不建议在 return
语句中使用赋值,这被认为是最佳实践。
规则详情
此规则旨在消除 return
语句中的赋值。 因此,当在 return
中发现赋值时,它会发出警告。
选项
该规则接受一个选项,一个字符串,它必须包含以下值之一
except-parens
(默认):除非赋值被括在括号中,否则禁止赋值。always
:禁止所有赋值。
except-parens
这是默认选项。 它禁止赋值,除非它们被括在括号中。
"except-parens"
默认选项的错误代码示例
在 Playground 中打开
/*eslint no-return-assign: "error"*/
function doSomething() {
}
function doSomethingElse() {
}
const foo =
const bar =
function doSomethingMore() {
}
"except-parens"
默认选项的正确代码示例
在 Playground 中打开
/*eslint no-return-assign: "error"*/
function doSomething() {
return foo == bar + 2;
}
function doSomethingElse() {
return foo === bar + 2;
}
function doSomethingMore() {
return (foo = bar + 2);
}
const foo = (a, b) => (a = b)
const bar = (a, b, c) => ((a = b), c == b)
function doAnotherThing() {
return (foo = bar) && foo > 0;
}
always
此选项禁止在 return
语句中使用所有赋值。 所有赋值都被视为问题。
"always"
选项的错误代码示例
在 Playground 中打开
/*eslint no-return-assign: ["error", "always"]*/
function doSomething() {
}
function doSomethingElse() {
}
function doSomethingMore() {
}
"always"
选项的正确代码示例
在 Playground 中打开
/*eslint no-return-assign: ["error", "always"]*/
function doSomething() {
return foo == bar + 2;
}
function doSomethingElse() {
return foo === bar + 2;
}
何时不使用
如果您想允许在 return
语句中使用赋值运算符,那么您可以安全地禁用此规则。
版本
此规则在 ESLint v0.0.9 中引入。