2013-04-24 46 views
0

考慮我有一個函數的名稱,它不需要在VAR任何說法有它的名稱來執行功能的方法 -是那裏,當我在一個字符串

var fn = "foo"; 

我可以在一些執行它或類似這樣的 -

eval(fn); 

它不起作用。請建議。

我的函數定義看起來就像這樣 -

function foo() { 
    ....do something.... 
} 
+0

不FN()工作? – Virus721 2013-04-24 04:54:09

+0

還有其他方法可以在運行時決定一個函數。你絕對需要一個字符串的名字? – michaelb958 2013-04-24 04:54:12

回答

-2

試試這個

eval(fn)(); 

或本

eval(fn + "()"); 
+1

eval被認爲是邪惡的。它會工作,但沒有必要,應該避免 – mplungjan 2013-04-24 05:04:42

+1

@mplungjan,我想我從EE日知道你:)。無論如何,如果要評估的字符串是由用戶輸入的,則eval是邪惡的,否則它應該很好地禁止字符串被編譯然後執行的事實。 – gurvinder372 2013-04-24 05:10:52

+1

當然 - 但不要使用它比使用它更好,而不是使用更合適的方法 - 是的,我們彼此認識;) – mplungjan 2013-04-24 05:12:42

1

請不要使用eval。

如果函數是在全球範圍內,根本就

var fn = "foo"; 
window[fn](); 

DEMO

相關問題