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 中引入。