2014-03-06 20 views
1

考慮以下幾點:如何用字符串化函數(Javascript)中的值替換變量?

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實現這一目標(JavaScript和正則表達式)的一些其他的方式(使用已知的template函數)?

基本上我試圖想出一個整潔的函數,將函數轉換爲字符串,同時用各自的值替換該函數中存在的所有變量(具有硬編碼值),而沒有使用任何變量。

感謝

回答

6

您可以通過改變.replace的第一個參數解決您的片段:

var a = 5; 

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

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

更多通用的解決方案,您可能需要與語法分析更聰明的解析器。

+0

該死的。很簡單。我怎麼錯過了?你說得對,我的方法非常簡單,我很確定它會打破更多精細的變量類型。非常感謝! –

相關問題