CodeQL 文档

分号插入

ID: js/automatic-semicolon-insertion
Kind: problem
Security severity: 
Severity: recommendation
Precision: very-high
Tags:
   - maintainability
   - language-features
   - statistical
   - non-attributable
Query suites:
   - javascript-security-and-quality.qls

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

JavaScript 中的一些语句不需要显式分号终止;解析器会在遇到换行符时隐式插入分号。这是一个危险的功能,因为它可以掩盖细微的错误并使读者迷惑;不应依赖它。

建议

将隐式插入的分号明确化。

示例

在以下代码片段中,程序员很可能想返回一个具有单个属性status的对象字面量。

function f() {
	return
	{
		status: 'OK'
	}
}

然而,由于return关键字之后有一个换行符,解析器会在return之后插入一个隐式分号;然后,对象字面量被解释为一个包含单个语句的块,该语句的标签为status。由于它紧跟在return之后,此块当然永远不会执行,并且该函数现在返回undefined,而不是返回一个对象字面量。

为了修复此错误,对象字面量的左大括号应放在与return关键字相同的行上

function f() {
	return {
		status: 'OK'
	};
}

参考资料

  • D. Crockford,JavaScript: The Good Parts,附录 A.3。O’Reilly,2008。

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