js用变量 替换模板字符串${}中的内容:
使用方法2:IE11 不兼容模板字符串会报错:SCRIPT1014: Invalid character.
打debugger 会发现 走到
return new Function(keys.join(","), "return
" + url + ";").apply( null, dataList );
之后会走catch(){}报错,IE11 不兼容模板字符串.
方法1 完美解决,通过正则解决该问题.
方法1:
const url = "hello${name}+${age}";
var render = function(str, data) {
const keys = Object.keys(data);
const dataList = keys.map(function(key) {
return data[key];
});
for (var i = 0; i < keys.length; i++) {
str = str.replace(
new RegExp("\\$\\{" + keys[i] + "\\}", "gm"),
dataList[i]
);
}
return str;
};
var result = render(url, {
name: "aaa",
age: "100"
});
console.log(result );
方法2:
let url = "hello${name}+${age}";
var test = function(url, data) {
const keys = Object.keys(data);
const dataList = keys.map(function(key) {
return data[key];
});
return new Function(keys.join(","), "return `" + url + "`;").apply(
null,
dataList
);
};
var result = test(url, {
name: "aaa",
age: "100"
});
console.log(result );