Obtenga una variable global dinámicamente por cadena de nombre en JavaScript

Resuelto Igor Golodnitsky asked hace 15 años • 6 respuestas
<script>
//in one script
var someVarName_10 = 20;
</script>

Quiero obtener acceso a esta variable desde otro script por nombre de variable. Con el objeto de ventana es simple, ¿es posible con la variable local?

Me refiero a acceder a esta var mediante un código como este:

<script>
  const num = 10;
  alert(all_vars['someVar' + 'Name_' + num]);
</script>
Igor Golodnitsky avatar Dec 17 '09 17:12 Igor Golodnitsky
Aceptado

¿Quieres hacer algo como esto?

<script>
//in one script
var someVarName_10 = 20;

alert(window["someVarName_10"]); //alert 20

</script>

Actualización : porque OP editó la pregunta.

<script>
  num=10;
  alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
YOU avatar Dec 17 '2009 10:12 YOU

Me he dado cuenta de que todo el mundo recomienda la creación de var global, lo que provocará que las variables se filtren al espacio de nombres global. Cuando crea dinámicamente nombres de clases o simplemente variables, es fácil mantenerlos locales:

this['className'] = 123;

o

this['varName'] = 123;

El espacio entre nombres se vería así:

vars = {};
vars['varName'] = 123;
vars.varName // 123
Andrew Shatnyy avatar Sep 08 '2012 21:09 Andrew Shatnyy
<script>
    var someVarName_10 = 20;
    var num = 10;
    alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
Matteo Baroni avatar Jan 16 '2015 16:01 Matteo Baroni