我有包含anonymus函數定義的字符串,但我怎麼稱呼它。比方說,功能就像這樣:如何從字符串調用匿名函數
var fn_str = "function(){ alert('called'); }";
嘗試的eval,卻得到了一個錯誤,函數必須有一個名字。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
我有包含anonymus函數定義的字符串,但我怎麼稱呼它。比方說,功能就像這樣:如何從字符串調用匿名函數
var fn_str = "function(){ alert('called'); }";
嘗試的eval,卻得到了一個錯誤,函數必須有一個名字。
eval(fn_str).apply(this); // SyntaxError: function statement requires a name
您可以使用立即調用函數表達式:
var fn_str = "function(){ alert('called'); }";
eval('(' + fn_str +')();');
Immediately Invoked Function Expression
另一種方法是使用一個Function
對象(如果有函數體字符串):
var func = new Function("alert('called')");
func.apply(this);
已經想通了,但謝謝!接受/ + 1快速回復:) – Kristian 2012-03-09 08:30:17
找到了解決辦法:把功能括號
var a = "(function(){ alert('called'); })";
eval(a).apply(this);
您可以使用函數構造函數創建字符串的函數:
var fn = new Function("arg1", "alert('called ' + arg1);");
fn.apply(this)
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
+1。雖然只有當他具有功能體字符串時才能工作...... – gdoron 2012-03-09 08:59:22
你叫'eval'用'了'而函數字符串在'fn_str'中。這不會用這種方式... – gdoron 2012-03-09 08:33:15
對不起,我用了一個在螢火蟲控制檯的簡稱,但忘了改變這一點,雖然 – Kristian 2012-03-09 08:35:20