如何将动态Javascript转换为文本?

时间:2014-02-09 19:50:32

标签: javascript eval

我有一些代码(无论是在下面的 jsToBeConverted 函数体内),我希望能够将其转换为文本,以便用户可以复制它然后将其粘贴到

。他们网站上的<script>元素已被执行。

someElement.onclick = function ()
{
    var textForUserToCopy = (function ()
    {
      x = document.getElementById('someInput').value;

      var jsToBeConverted = function ()
      {
        var y = x + 6;

        var z = function (a)
        {
          return (a + 5);
        };

         window.d = z(y);
      };

      var jsToExecute = "(" + jsToBeConverted + ")();"

      return jsToExecute;
    })();
};

但是这会产生以下文字:

"(function ()
 { 
   var y = x + 6; 

   var z = function (a)
   {
     return (a + 5);
   };

   window.d = z(y);
 })();"

但这不是我想要的。如果评估上述内容,那么 x 显然是未定义的。 我想要的是 x 当时被其值替换,然后将js转换为文本。因此,如果 x 的值碰巧是 123 ,那么这就是生成的文本应该是这样的:

"(function ()
 {
   var y = 6 + 6; 

   var z = function (a)
   {
     return (a + 5);
   };

   window.d = z(y);
 })();"

如果评估上面的字符串 - window.d将是17

是否有一些标准的功能/流程用于生成/将动态代码转换为文本?

谢谢

1 个答案:

答案 0 :(得分:0)

你可以简单地连接。

e.g:

"function (x) { return " + generated_value + " + x }";

要获得更优雅的解决方案,请参阅字符串格式: JavaScript equivalent to printf/string.format