Nomes de variables ​​dinâmicas em javascript

Eu tenho variável:

var variableDynamic = 1; // or var variableDynamic = 1 + i++; 

Existe alguma maneira de usar isso para criar nomes de variables ​​dinâmicas, por exemplo, algo como isto:

 var variableName + variableDynamic = {}; // or var (variableName + variableDynamic) = {}; 

Eu sei que o que escrevi acima é absurdo, mas isso é para explicar a ideia. É possível?


Ok, o que eu quero fazer para criar elemento (formulário de upload) toda vez que o usuário clica em adicionar novo grupo de arquivos, tudo está funcionando bem, exceto que o plugin que eu uso para ele precisa de uma variável especial para cada botão de upload (.uploadStoredFiles ();).

Este é um código difícil que eu fiz:

  $('#addOneMoreFileOrGroup').on('click', function(){ var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1; $('.well-large .control-group:last').after('
\ \
\ \ ? \
\
\
'); var HERE_I_NEED_DYNAMIC_VAR = new qq.FileUploader({ element: document.getElementById('file-uploader-' + latestFileUploaderId + ''), action: 'do-nothing.htm', autoUpload: false, debug: true, uploadButtonText: ' Select Files...', onSubmit: function() { $('#file-uploader-' + latestFileUploaderId + ' .qq-uploader').after(''); $('#file-uploader-trigger-' + latestFileUploaderId + '').on('click', function() { if($(this).parent().parent().parent().parent().find('.file-title').val() !== '') { HERE_I_NEED_DYNAMIC_VAR.uploadStoredFiles(); } else { $(this).parent().parent().parent().addClass('error'); } }); } }); }); }

Em JavaScript, as propriedades de um object podem ser acessadas por obj.prop ou obj['prop'] .

No escopo global, todas as variables ​​são filhos da propriedade window . Então você poderá fazer:

 var variableDynamic = 'Test'; window['variableName' + variableDynamic] = 'your value'; 

Confira este violino .

No entanto, se você quiser limitar o escopo dessa variável a uma function, terá que definir um object pai e usá-lo no lugar da window .

Você pode criar variables ​​dinâmicas com eval .

 eval("dynamic" + i + " = val[i]"); 

Também dê uma olhada nisso: Use nomes de variables ​​dinâmicas em JavaScript

Para isso você pode usar eval() . Mas eval() é mal. Você deve usar uma matriz para coisas como esta.

Exemplo:

 var i = 1337; eval('var myvar' + i + ' = \'value\';'); alert(myvar1337); 

Para adicionar à resposta do FAngels, você pode usar a notação de colchetes em qualquer lugar. Isto significa que além de usar window['var'] , você pode usar this['var'] .

Eu não acho que eval() é mal necessariamente – é apenas usado indevidamente às vezes. Sua tarefa é pegar uma string e “avalá-la” em código JavaScript ( MDN ), então, se você precisa definir variables ​​dinamicamente eval() é um método para fazer isso:

 var t = 't'; var four = '4'; eval('var ' + (t + four) + ' = "some value";'); console.log(t4); // returns "some value" to the console 

Existem provavelmente methods melhores para efetuar pares de variables ​​+ valores dynamics, até porque cadeias de código avaliadas são implementadas no nível global, mas o acima funciona. A questão é: é o melhor método para o que você quer alcançar? Veja esta postagem de blog de 2013 da NCZOnline para uma discussão sobre `eval () ‘.

Não tenho certeza de como isso poderia ser feito no escopo da function, mas a variável global poderia ser criada assim:

 window[variableName + variableDynamic] = {} 

Eu não acho que você pode criar nomes de variables ​​dinâmicas em javascript, mas você pode definir atributos de object por string. Portanto, se você criar suas variables ​​dinâmicas como atributos de um object, poderá realizar sua meta.