【问题标题】:How do I replace variables with values inside a stringified function (Javascript)?如何用字符串化函数(Javascript)中的值替换变量?
【发布时间】:2014-03-06 21:02:15
【问题描述】:

考虑以下几点:

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);
 }"

是否有其他方法可以在不使用 underscore 之类的库(使用已知的 template 函数)的情况下实现此目的(javascript + RegEx)?

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

谢谢

【问题讨论】:

    标签: javascript regex tostring


    【解决方案1】:

    您可以通过更改.replace 的第一个参数来修复您的 sn-p:

    var a = 5;
    
    var b = function ()
    {
      console.log ('<%a%>' + 5);
    };
    
    var c = b.toString().replace("'<%a%>'", a);
    

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

    【讨论】:

    • 该死的。很简单。我怎么错过了?你说得对,我的方法非常简单,我很确定它会因更复杂的变量类型而中断。非常感谢!
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2018-12-30
    • 2021-10-13
    • 2022-08-09
    • 2021-10-31
    • 1970-01-01
    • 2020-08-14
    • 2014-06-12
    相关资源
    最近更新 更多