Comment puis-je exécuter une chaîne en tant que code (en utilisant eval()
) et lui donner quelques variables? Par exemple, j'ai un objet nommé vars
et je souhaite que chacune de ses propriétés soit accessible pour le code sans spécifier le nom de l'objet. Quelque chose comme ceci:eval() avec des variables d'un objet dans la portée
function evalWithVariables(func, vars) {
//some magic here
return eval(func);
}
function test() {
var retval = evalWithVariables("a>5", {"a":7});
console.log(retval);
}
Oh, et le code est digne de confiance, il vient du même serveur que le script, il est généré par l'utilisateur et je suis sûr que eval
est l'outil ici (et Je sais que eval
est souvent maléfique).
Edit: La chose la plus importante pour moi est que le code qui est passé à eval()
semble bon, est court et ne pas contenir les noms de variables d'aide ou si.
Hmm, oui, cela devrait fonctionner, mais il semble en quelque sorte malpropre. – thejh
Le concept lui-même est sale :) –