l'exécution des fonctions anonymes créées à l'aide de JavaScript eval()

J'ai une fonction et son contenu sous la forme d'une chaîne.

var funcStr = "function() { alert('hello'); }";

Maintenant, je fais un eval() pour obtenir effectivement cette fonction dans une variable.

var func = eval(funcStr);

Si je me souviens bien, en Chrome et Opera, il suffit d'appeler

func();

invoquée que la fonction et le message d'alerte est affiché.

Mais, dans d'autres navigateurs, il n'était pas le cas. rien ne s'est passé.

Je ne veux pas un arguement sur ce qui est la bonne méthode, mais comment puis-je faire cela? Je veux être en mesure d'appeler variable(); pour exécuter la fonction stockée dans cette variable.

Je me demande pourquoi vous avez besoin d'une fonction anonyme représentée par une chaîne littérale, plutôt que de simplement avoir un nom de fonction?
Pour info: je suis à la définition de mon propre script pour mon application web. Je suis en train d'écrire un interprète et à la nécessité de construire JS fonctions à la volée et ensuite créer des fonctions exécutables.
pourquoi n'avez-vous pas écrit l'interprète de façon traditionnelle?
Je ne sais pas comment l'écrire dans la "méthode traditionnelle".. j'ai trouvé cela plus facile. Si vous pouvez vous la moindre idée de moi pour voir comment sa fait "traditionnellement" ce serait bien.
Essayez d'emballer la fonction entre parenthèses avant de passer la chaîne dans eval. var funcStr = "( function() { alert('hello'); } )";

OriginalL'auteur | 2009-08-13