Есть ли способ вызвать переменную, основанную на значении другой переменной, которая не всегда одинакова?
Пример:
var color = 'black';
var [color] = 'whatever'; // the variable name here would be 'black'
Причина использования: В редукторе Redux я получаю действие, которое имеет определенное значение
export default (state = INITIAL_STATE, action) => {
const { size, color, object } = action;
switch (action.type) {
case (DO_SOMETHING): {
// instead of name 'output' below, I want to have a value of 'color'
let output = object;
if (size) {
output = callExternalFunction(output, size);
}
return { ...state, [color]: output };
}
Моя цель: если это возможно, я смогу вернуться к этому:
return { ...state, [color] };
Вы можете использовать для этого объект window
. Попробуй это:
var color = 'black';
window[color] = 'whatever';
alert(black);
Редактировать:
Как сказал @Tavish Aggarwal, это сделает переменную global, если вы действительно не хотите, чтобы вы могли использовать eval()
.
Но eval - это зло, как говорится, поэтому я не рекомендую его.
Почему бы просто не использовать объект для хранения имен переменных? Например:
var color = 'black',
variables = {};
variables[color] = 'whatever'; // { black : 'whatever' }
return { ...state, variables['black'] } // { ...state, 'whatever' }
Это соответствует вашим потребностям? Возможно, я неправильно понял вопрос