2013-09-13 5 views
0

Я не могу найти ответ на этот вопрос напрямую.Использовать аргумент как имя переменной (Javascript)

Я хотел бы использовать аргумент функции как имя переменной внутри этой функции.

например,

test(var1); 

function test(foo) 
{ 
    var foo = 'Hello world!'; // Set var1 
} 

alert(var1); // Hello world! 

Могу ли я использовать скобки здесь (то есть окно. [])?

+0

Вы имеете в виду, что ваша переменная содержит скобки? или вы имеете в виду массив? –

+0

Не думайте в терминах переменных. Подумайте о терминах в свойствах (и о том, как они относятся к картам/словарям/объектам) - свойства могут иметь произвольные имена строк и могут быть доступны как «obj [propNameExpression]». Затем рассмотрим, что «окно» оценивает объект и, таким образом, поддерживает свойства и нормальный доступ к свойствам (хотя некоторые свойства DOM/браузера «зарезервированы»). При этом использование 'window [prop]', для неограниченного значения prop, вероятно, вызывает сомнения. Вместо этого рассмотрим 'myObject [prop]'. Вам также нужно передать '' var1 "' в качестве * строкового значения * (или идентификатор будет оценен). – user2246674

ответ

2

Да, вы можете использовать скобки:

window[foo] = "Hello World" 

Вот JSFiddle

1

Er ... хорошо, так что это почти наверняка не является хорошей идеей.

Короткий ответ: sorta. Если вы работаете в браузере, вы можете сделать это:

var polluteGlobalNamespace = function(symbol) { 
    window[symbol] = "whatever"; 
}; 
polluteGlobalNamespace('foo'); 
console.log(foo); 

Но это работает только для глобальных переменных. Невозможно сделать это с помощью переменных с расширенной функциональностью, поскольку JavaScript не имеет сред первого класса.

Но если вы не делаете глубокое темное метапрограммирование, это не очень хорошая идея. Возможно, лучше опубликовать проблему, которую вы пытаетесь решить с помощью этой функции, чтобы узнать, что такое идиоматический способ сделать это.

Смежные вопросы