JavaScript模板字符串用反引号包裹,支持${}插值、多行文本和任意表达式运算,提升可读性与安全性,但不自动防XSS,需手动转义用户输入。
JavaScript模板字符串(Template Literal)是一种用反引号(`)包裹的字符串语法,它支持嵌入表达式、多行文本和字符串插值,让字符串拼接更直观、更安全。
传统字符串拼接常靠+连接,容易出错且可读性差;模板字符串用${}直接插入变量或表达式,逻辑一目了然。
"Hello " + name + ", you are " + age + " years old."
`Hello ${name}, you are ${age} years old.`
`Next year you'll be ${age + 1}`
不用\n或+换行,直接回车就能换行,缩进和格式保留原样。
"Line 1\nLine 2\nLine 3" 或用+连多行`Line 1(换行符会真实显示)
Line 2
Line 3`
L片段、SQL查询、说明文案等场景大括号里不限于变量,任何合法JS表达式都可运行,包括三元运算、函数调用甚至简单对象属性访问。
`Status: ${isActive ? 'Online' : 'Offline'}``Price: $${(price * 1.1).toFixed(2)}``User: ${user?.name || 'Anonymous'}`(配合可选链)模板字符串本身不会自动转义HTML或防XSS,需自行处理敏感内容;另外反引号不能嵌套,如需在${}中用反引号,得用字符串拼接或转义。
`text ${`inner`}` ❌(语法错误)`text ${"inner"}` ✅ 或 `text ${"`inner`"}` ✅