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

Spr*_*der 1 javascript regex tostring

考虑以下 :

var a = 5;

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

var c = b.toString();
Run Code Online (Sandbox Code Playgroud)

经过上述执行后,c将等于:

"function ()
 {
   console.log (a + 5);
 }"
Run Code Online (Sandbox Code Playgroud)

我怎么能c等于:

"function ()
 {
   console.log (5 + 5);
 }"
Run Code Online (Sandbox Code Playgroud)

代替?

我尝试了以下方法:

var a = 5;

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

var c = b.toString().replace('<%a%>', a);
Run Code Online (Sandbox Code Playgroud)

但上面显然c等于:

"function ()
 {
   console.log ('5' + 5);
 }"
Run Code Online (Sandbox Code Playgroud)

是否有其他方法来实现这个(javascript + RegEx)而不使用像underscore(具有已知template函数)的库?

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

谢谢

Min*_*hev 6

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

var a = 5;

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

var c = b.toString().replace("'<%a%>'", a);
Run Code Online (Sandbox Code Playgroud)

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