В настоящее время это возможно только при помощи спорного «Eval ()» функция ...
function list(v,a){
v=v.split(',');
for(var s='',i=0;i<v.length;i++)
s+=v[i]+'='+i+'<'+a+'.length?'+a+'['+i+']:null;';
return s;
}
Использование:
eval(list(var_names_as_comma_separated_str, str_name_of_array));
Пример:
A=['one',1,'z1'];
eval(list('x,y,z','A'));
console.log('+-> First: ',x,y,z); //output: one 1 z1
(function(){
var z,B=['two',2,'local']; //note that z is local variable
console.log('Local.Before: ',x,y,z); //output: one 1 undefined
eval(list('x,y,z','B'));
console.log('Local.After: ',x,y,z); //output: two 2 local
})()
console.log('+-> Back: ',x,y,z); //output: two 2 z1 (global z is unchanged)
Примечание: window ['var_name'] нельзя использовать для доступа к локальной переменной (переменная внутри функции), поэтому у нас нет другого выбора, кроме eval () ...