常量赋值¶
ID: js/assignment-to-constant
Kind: problem
Security severity:
Severity: error
Precision: very-high
Tags:
- reliability
- correctness
Query suites:
- javascript-security-and-quality.qls
大多数流行的 JavaScript 平台支持 const
声明,尽管此功能不是 ECMAScript 5 标准的一部分。为声明为 const
的变量赋值新值不会在当前平台上导致错误,并且只是没有效果。依赖此行为很容易出错,尤其是在 ECMAScript 2015 禁止此类赋值的情况下。
建议¶
如果变量确实需要重新赋值,请将其声明从 const
更改为 var
,或者如果可能,将赋值合并到变量声明中。否则,请删除多余的赋值。
示例¶
在以下示例中,loc
初始化为 null
,然后根据变量 dist
的值设置为 "here"
或 "there"
。但是,大多数当前平台都会完全忽略这些赋值,因此 loc
将保留其原始值 null
。
const loc = null;
if (dist < 10)
loc = "here";
else
loc = "there";
相反,可以将对 loc
的赋值合并到其声明中,如下所示
const loc = dist < 10 ? "here" : "there";
参考资料¶
Mozilla 开发者网络:const.