javascript模板字符串是什么_它比普通字符串好在哪里【教程】

9次阅读

模板字符串es6为多行文本、变量插值和表达式嵌入设计的语法补充,须用反引号包裹,支持换行、空格及${}内任意javaScript表达式,但不支持变量声明或if语句;兼容IE需转译,注意隐形空白问题。

javascript模板字符串是什么_它比普通字符串好在哪里【教程】

javascript 模板字符串不是“更好”的字符串,而是为特定场景设计的语法补充:它解决的是多行文本、变量插值和表达式嵌入的硬需求,普通字符串在这些地方要么写法冗长,要么根本做不到。

模板字符串怎么写?` 反引号是关键

必须用反引号 ` 包裹,不是单引号或双引号。里面可以自由换行、写空格,也能直接嵌入变量和表达式。

常见错误是复制粘贴时混入中文符号,或者误用成 '" —— 这样就只是普通字符串,${...} 会被当字面量输出,不会执行。

示例:

立即学习Java免费学习笔记(深入)”;

const name = 'Alice'; const age = 28; const msg = `Hello, ${name}. You are ${age} years old. Result: ${age > 18 ? 'adult' : 'minor'}`;

上面会正确换行并计算条件表达式;换成双引号就会报错或显示原始 ${...} 文本。

${...} 里能放什么?不只是变量名

花括号内是 JavaScript 表达式,不是模板语法专属功能,而是直接运行在当前作用域的代码片段。

  • 可以是变量:${count}
  • 可以是函数调用:${getDate()}
  • 可以是对象属性访问:${user.profile.name}
  • 可以是数组索引:${list[0]}
  • 甚至可以是带副作用的语句(不推荐):${console.log('side effect')}

注意:不能在里面声明变量(如 ${let x = 1})、不能写 if 语句(但可用三元运算符替代),也不能用 return

为什么不用 + 拼接或 String.prototype.concat()

拼接在简单场景下没问题,但一旦涉及多层嵌套、条件分支或换行,可读性和维护性断崖式下降。

比如动态生成 html 片段:

// 拼接写法(难读、易错、难调试) const html = '

' + '

' + title + '

' + '

' + (desc || 'No description') + '

' + '

';

// 模板字符串(结构清晰,逻辑一目了然) const html = `

${title}

${desc || 'No description'}

text=ZqhQzanResources