2010-03-08 271 views
0

我可以將一些Javascript函數傳遞給某個函數,然後從函數內部執行該Javascript,例如:將javascript傳遞給函數

test("a = 1; b = 2; test2(a,b);"); 

function test(js) { 
// execute dynamically generated JS here. 
} 

基本上我有一個是在服務器上生成的一些代碼,我想的代碼傳遞給它時,它已經處理完它執行作爲參數傳遞的代碼一個JS功能。

這對於setTimeout的參數也是有用的,然後傳遞的代碼可以在超時事件中執行。

可以這樣做嗎?

+0

以下工作答案的功能,但如何是所生成的服務器腳本給客戶端?取決於可能有​​更好的方法。 – 2010-03-08 12:22:31

+1

如果你在服務器上動態生成JS,那麼你可能做錯了什麼。先寫JS,然後從服務器傳遞數據。使用這些數據來確定要運行哪些功能。 – Quentin 2010-03-08 12:24:09

回答

2

,如果你做這樣的事情作爲一個例子,是可能的:

function foo(){ 
alert('foo'); 
} 

function bar(fn){ 
fn(); 
} 

bar(foo); // alerts 'foo' 
0

這是eval是:

test("a = 1; b = 2; test2(a,b);"); 

function test(js) { 
    eval(js); 
} 

線索的衝擊 「EVAL是邪惡的」 意見。

0

你可以這樣做:

function test(js) { 
    setTimeout(js, 1000); //Execute in 1 second 
} 
1

在使用eval代替,你可以創建一個從參數字符串這樣

test("a = 1; b = 2; test2(a,b);"); 

function test(js) { 
    var fn = new Function(js); 
    // execute you new function [fn] here. 
}