如何用另一个变量的值命名变量? JS

时间:2017-09-21 09:15:23

标签: javascript string redux

有没有办法根据另一个变量的值来调用变量,这个变量并不总是相同?

示例:

var color = 'black';
var [color] = 'whatever'; // the variable name here would be 'black'

使用原因:在Redux的reducer中,我收到一个包含特定值的操作

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] };

2 个答案:

答案 0 :(得分:1)

您可以使用window对象。试试这个:



var color = 'black';
window[color] = 'whatever';
alert(black);




修改

正如@Tavish Aggarwal所说,如果你真的不想让你使用eval(),那么这将使变量成为全局变量。

eval is evil,俗话说,所以我不推荐它。

答案 1 :(得分:0)

为什么不使用对象来保存变量名称?例如:

var color = 'black',
    variables = {};

variables[color] = 'whatever'; // { black : 'whatever' }

return { ...state, variables['black'] } // { ...state, 'whatever' }

这符合您的需求吗?也许我误解了这个问题