字符串字面量中的模板语法¶
ID: js/template-syntax-in-string-literal
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- correctness
Query suites:
- javascript-security-and-quality.qls
模板字面量是用反引号 ( ``
) 括起来的字符串。它们可能包含带有语法 ${*..*}
的占位符表达式,这些表达式在运行时被计算并作为字符串的一部分插入。
普通字符串字面量可以用单引号 ( ''
) 或双引号 ( ""
) 括起来,占位符语法 ${*..*}
在这些字符串中没有特殊含义。
在使用模板字面量的文件中,很难区分实际的模板字面量与恰好包含占位符语法的普通字符串。这通常是由于在模板字面量上错误地键入了引号。
建议¶
考虑一下这是否打算成为一个模板字面量,如果是,则将引号更改为反引号 ( ``
)。或者
重命名一些局部变量,以便占位符不会让人觉得它们是引用这些变量。
避免在同一个文件中混合使用 JavaScript 模板字面量和其他模板系统。
示例¶
在以下示例中,对 log.error
的调用将记录字符串“${id}
”,而不是 id
变量的内容。
log.info(`Connecting to ${id}`)
let connection = openConnection(id)
if (!connection) {
log.error('Could not connect to ${id}')
}
要纠正错误消息,请将引号更改为反引号
log.info(`Connecting to ${id}`)
let connection = openConnection(id)
if (!connection) {
log.error(`Could not connect to ${id}`)
}
参考¶
Mozilla 开发者网络:模板字面量.