Como faço para declarar e usar variables ​​dinâmicas em javascript?

Suponha que eu precise declarar uma variável javascript com base em um contador como faço isso?

var pageNumber = 1; var "text"+pageNumber; 

O código acima não funciona?

Poderia ajudar por favor? Obrigado!

Em JavaScript (como eu sei) existem duas maneiras pelas quais você pode criar variables ​​dinâmicas:

  1. function eval
  2. object de janela

eval:

 var pageNumber = 1; eval("var text" + pageNumber + "=123;"); alert(text1); 

object da janela:

 var pageNumber = 1; window["text" + pageNumber] = 123; alert(window["text" + pageNumber]); 

Como você acessaria a dita variável desde que você não sabe o nome dela? 🙂 Você provavelmente é melhor definir um parâmetro em um object, por exemplo:

 var obj = {}; obj['text' + pageNumber] = 1; 

se você realmente quer fazer isso:

 eval('var text' + pageNumber + '=1'); 

Eu não acho que você pode cantar JavaScript. Eu acho que você pode usar uma matriz em vez disso,

  var textArray=new Array(); textArray[pageNumber]="something"; 

Supondo que a variável esteja no escopo global, você poderia fazer algo assim:

 var x = 1; var x1 = "test" console.log(window["x" + x]); //prints "test" 

No entanto, uma pergunta melhor pode ser por que você quer tal comportamento.

Você também pode envolver seu contador em um object:

 var PageNumber = (function() { var value = 0; return { getVal: function(){return value;}, incr: function(val){ value += val || 1; this['text'+value]=true /*or some value*/; return this; } }; })(); alert(PageNumber.incr().incr().text2); //=>true alert(PageNumber['text'+PageNumber.getVal()]) /==> true 

Isso pode ser feito usando this palavra this chave no JS:

Por exemplo:

 var a = [1,2,3]; for(var i = 0; i < a.length; i++) { this["var" + i] = i + 1; } 

então quando você imprimir:

 var0 // 1 var1 // 2 var2 // 3 

Eu precisei recentemente de algo assim.

Eu tenho uma lista de variables ​​como esta:

 var a = $('
'),b = $('
'),c = $('
');

Eu precisava chamá-los usando outra variável que continha uma string com o nome de uma dessas variables ​​assim:

 var c = 'a'; // holds the name of the wanted content, but can also be 'b' or 'c' $('someSelector').html(eval(c)) // this will just use the content of var c defined above 

Basta usar o eval para obter os dados variables.

eu apenas fiz