2014-12-25 111 views
0

節日快樂。 我想執行一個函數,我已經保存在一個變量中,因爲我可以這樣做?將javascript函數轉換成變量

我試過了。

funcVar = 'function (a, b) {c = a + b; alert (c);}'; 

document.write (funcVar); 

但沒有功能,我想使用該函數是在某個點的變量。

+0

寫?!你*可以*'eval',但是...什麼是實際用例?換句話說,你爲什麼認爲你想這樣做? –

+0

'eval'是你的朋友,它適用於所有的事情,只要做'eval(funcVar)',你就是金。 – adeneo

+3

'eval'不是你的朋友。 'eval'很慢,很難調試,並且會導致比解決問題更多的問題。它解決了幾乎沒有其他技術無法解決的問題。 – Quentin

回答

2

您需要:

  • 把它寫成一個函數,而不是字符串
  • 調用它,而不是將其寫入文件,就像它是HTML的字符串
  • 傳遞參數,因爲它沒有意義的undefined添加到自身

您應該:

  • 不使用全局

這樣的:

var funcVar; 
funcVar = function (a, b) { 
    var c = a + b; 
    alert (c); 
}; 
funVar(1,2); 
0

這不是一個功能,這是一個字符串。您需要刪除引號。而你需要執行它,而不是打印:

var funcVar = function (a, b) {c = a + b; alert (c);}; 
 

 
funcVar(23, 42);

-1

這工作。謝謝你們。

var funcVar; 
funcVar = 'function stop() {alert ("Test");}'; 
eval(funcVar); 

stop(); 
+0

如果你對'eval'的所有潛在問題感到滿意,你可能更喜歡'new Function(body_string)'語法 –