有没有办法根据另一个变量的值来调用变量,这个变量并不总是相同?
示例:
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] };
答案 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' }
这符合您的需求吗?也许我误解了这个问题