Il n'est pas destinée à être réellement utilisée dans la vraie vie, juste un exercice intéressant. Voir (Pourquoi utiliser le JavaScript de la fonction eval une mauvaise idée?(Pourquoi utiliser le JavaScript de la fonction eval une mauvaise idée?) pour plus de détails.
C'est le plus proche que vous pouvez obtenir sans avoir recours à des extensions spécifiques au fournisseur:
myArray = [1,2,3];
eval(set('a,b,c = myArray'));
Fonction d'aide:
function set(code) {
var vars=code.split('=')[0].trim().split(',');
var array=code.split('=')[1].trim();
return 'var '+vars.map(function(x,i){return x+'='+array+'['+i+']'}).join(',');
}
La preuve que cela fonctionne dans l'arbitraire de la portée:
(function(){
myArray = [4,5,6];
eval(set('x,y,z = myArray'));
console.log(y); // prints 5
})()
eval
n'est pas dans Safari.