请求新增ESLint规则检测嵌套变量赋值,现有规则无法适配
ESLint暂无检测函数参数中嵌套变量赋值的规则,这类常见错误无法被覆盖
目前ESLint没有规则能检测函数参数中的嵌套变量赋值,但这类错误在开发中非常常见——比如示例代码里,调用断言函数时误将比较操作写成赋值,导致变量被意外修改:
function assert (cond) { if (!cond) { throw new Error("Assertion failed."); } } function test () { let var1 = 1; assert(var1 = 2); // 错误:这里把2赋值给了var1! console.log(var1); // 最终输出2,而非预期的断言失败 }
针对这个问题,我做过以下尝试:
- 曾在GitHub提交新增规则的提议,但平台规定只有涉及ECMAScript新特性的提议才会被处理,因此无法推进。
- 排查了ESLint现有规则,
no-cond-assign和no-return-assign虽与赋值检测相关,但前者仅覆盖条件语句中的赋值场景,后者针对返回语句中的赋值,均无法扩展到函数参数里的赋值情况。
内容的提问来源于stack exchange,提问作者Christian d'Heureuse
相关产品推荐
相关产品推荐

