猿问

将字符串转换为模板字符串

将字符串转换为模板字符串

是否可以将模板字符串创建为通常的字符串?

let a="b:${b}";

然后将其转换为模板字符串。

let b=10;console.log(a.template());//b:10

evalnew Function以及其他动态代码生成方法?


吃鸡游戏
浏览 562回答 3
3回答

MMTTMM

因为模板字符串必须获得对b动态地(在运行时)变量,所以答案是:不,没有动态代码生成是不可能的。但与eval很简单:let tpl = eval('`'+a+'`');

HUH函数

在我的项目中,我用ES6创建了这样的东西:String.prototype.interpolate = function(params) {  const names = Object.keys(params);  const vals = Object.values(params);  return new Function(...names, `return \`${this}\`;`)(...vals);}const template = 'Example text: ${text}';const result = template.interpolate({  text: 'Foo Boo'});console.log(result);更新我已经删除了存放依赖项,ES6具有获取键和值的等效方法。

慕无忌1623718

你在这里要求的是://non working code quoted from the questionlet b=10;console.log(a.template());//b:10完全等同于(就权力和呃安全而言)eval*获取包含代码的字符串并执行该代码的能力;以及执行代码查看调用方环境中的局部变量的能力。函数在js中无法查看调用方中的局部变量,除非该函数是eval()..平Function()做不到。当您听说JavaScript中有一种叫做“模板字符串”的东西时,很自然地假设它是一个内置的模板库,比如胡子。不是,主要是字符串插值和用于JS的多行字符串。不过,我认为这在一段时间内将是一个普遍的误解。:(
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答