标签模版
采用es6实现html转义功能:
var sender = "<h1>小明</h1>";
function SaferHTML(templateData) {
var s = templateData[0];
for (var i = 1; i < arguments.length; i++) {
var arg = String(arguments[i]);
//正则替换html标签
s += arg.replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">");
s += templateData[i];
}
return s;
}
var message = SaferHTML`<p>${sender} has sent you a message.</p>`;
//print message ,we get '"<p><h1>小明</h1> has sent you a message.</p>"'
String.raw
往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串
eg:
String.raw`Hi\n${2+3}!`; //换行符会被转义输出,而不是换行
//有意思的应用
String.raw({ raw: 'test' }, 0, 1, 2);
//会输出t0e1s2t,看见这样的输出,你能自己动手实现raw函数