如何用字符串化函数(Javascript)中的值替换变量?

时间:2014-03-06 21:02:15

标签: javascript regex tostring

请考虑以下事项:

var a = 5;

var b = function ()
{
  console.log (a + 5);
};

var c = b.toString();

执行上述操作后,c将等于:

"function ()
 {
   console.log (a + 5);
 }"

我如何才能c等于:

"function ()
 {
   console.log (5 + 5);
 }"

代替?

我尝试了以下内容:

var a = 5;

var b = function ()
{
  console.log ('<%a%>' + 5);
};

var c = b.toString().replace('<%a%>', a);

但上面显然使c等于:

"function ()
 {
   console.log ('5' + 5);
 }"

是否有其他方法可以实现此目的(javascript + RegEx)而不使用像underscore这样的库(使用已知的template函数)?

基本上我正在尝试提出一个简洁的函数,它将函数转换为字符串,同时将该函数中存在的所有变量(具有硬编码值)替换为各自的值,而无需使用任何变量。

由于

1 个答案:

答案 0 :(得分:6)

您可以通过更改.replace的第一个参数来修复代码段:

var a = 5;

var b = function ()
{
  console.log ('<%a%>' + 5);
};

var c = b.toString().replace("'<%a%>'", a);

对于更通用的解决方案,您可能需要更智能的语法分析解析器。