参考mdn
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings
模板字面量 是允许嵌入表达式的字符串字面量。你可以使用多行字符串和字符串插值功能
可能你会问,这和普通的字符串拼接有什么不一样。也许比较优雅。类似py 的format 。代码优雅才是王道。写的乱自己都看不懂
-
基本语法
`string text`
`string text line 1
string text line 2`
`string text ${expression} string text`
tag `string text ${expression} string text`
-
描述
模板字符串就是用 代替普通的 ' 和 " (模板内需要
要用 \
)
${exp}..
表达式里面可以包含 变量的占位符
-
多行字符串
普通多行字符串可能要用 \n 来实现。 模板字符串不需要,你的回车会识别成换行符
-
插入表达式
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and
not ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
-
嵌套模板
模板文字而没有嵌套
const classes = `header ${ isLargeScreen() ? '' :
(item.isCollapsed ? 'icon-expander' : 'icon-collapser') }`;
嵌套模板字面量中
const classes = `header ${ isLargeScreen() ? '' :
`icon-${item.isCollapsed ? 'expander' : 'collapser'}` }`;
由此可见,嵌套是为了提取公共部分,简化表达式的。
-
带标签的模板字符串
高级用法是 标签模板字符串
标签就是函数名,他返回一个字符串。
用法就是
function myTag(strings,exp0,exp1...){
return exp0 + strings[0] + strings[1] + (exp1>1 ? exp:1)
}
var age = 10;
var name = "yxl";
myTag`年龄 ${name} 是 ${age} `
结果:
yxl 年龄是 10
上面的结果可以看出 函数名后面紧跟模板字符串。函数第一个参数(这里是strings )是一个数组,他的值是模板字符串按照占位符分割的其他普通字符串的数组。后面的不定长参数是 占位符按照顺序传进去。
这样一个函数返回什么值,就完全靠你的函数定制了。比较灵活。
就这么多吧
网友评论