2012-12-17 3 views
0

Total newbie question. comment puis-je obtenir le code suivant à travailler. L'idée est d'avoir le test de fonction sous forme de chaîne, et de pouvoir l'exécuter en tant que fonction. eval ne semble pas fonctionner, et j'ai essayé JSON.parse aussi, sans chance ..Convertir une chaîne en une fonction

+3

Je ne sais pas votre besoin réel, mais si vous utilisez eval, vous Je le fais probablement mal. – Grinn

Répondre

4

Ajouter des parenthèses autour de f_str, de sorte qu'il est interprété comme une expression de fonction.

var f_str = "(function test(msg) { alert(msg) })"; 
var f = eval(f_str); 
f("hello"); 

Dans votre code actuel, le code est interprété comme une déclaration de fonction. Vous pouvez le voir par l'impression/en utilisant la valeur de test:

var f_str = "function test(msg) { alert(msg) }"; 
var f = eval(f_str);//^^^^ 
test("hello"); // <-- 
0

Cela est généralement une mauvaise idée; si vous voulez exécuter JavaScript dynamique, vous pouvez utiliser un extrait comme ceci:

(function() { 
    var code = document.createElement('script'); 
    code.type = 'text/javascript'; 
    code.async = true; 
    code.src = '/path/to/script'; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(code, s); 
    }()); 

Ou utilisez jQuery.getScript():

$.getScript('/path/to/script'); 
Questions connexes