如何让其转义字符失效
var text = String.raw`abc\t\nbcd`;console.log(text); // 输出结果为 abc\t\nbcd
模板字符串标记
使用方法 标记名 + 模板字符串内容
标记名会被当做函数调用,所以需要函数配合,并将其参数传递进去
参数如下
1. 参数1:被插值分割的字符串数组 /会将模板字符串中的字符串分割为数组
2. 后续参数:所有的插值 / 插值就是${插值}里面的值
利用标记改进模板字符串的缺点,如果传入的代码,会执行此代码 代码如下
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title></head><body><p><textarea id="txt"></textarea><button id="btn">设置div的内容</button></p><div id="container"></div><script src="./index.js"></script></body></html>
const container = document.getElementById("container");const txt = document.getElementById("txt");const btn = document.getElementById("btn");btn.onclick = function(){container.innerHTML = safe`<p>${txt.value}</p><h1>${txt.value}</h1>`;}function safe(parts){// const values = Array.prototype.slice.apply(arguments).slice(1);const values = Array.from(arguments).slice(1);let str = "";for (let i = 0; i < values.length; i++) {const v = values[i].replace(/</g, "<").replace(/>/g, ">");str += parts[i] + v;if (i === values.length - 1) {str += parts[i + 1];}}return str;}
结果示意图
