CodeQL 文档

常量赋值

ID: js/assignment-to-constant
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - reliability
   - correctness
Query suites:
   - javascript-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

大多数流行的 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.

  • ©GitHub, Inc.
  • 条款
  • 隐私