我试图引用一个动态设置的变量的属性。当第一个console.log行使用vars[sv.name]运行时,它输出正确的结果。当我在eval语句中进一步引用vars[]时,会得到ReferenceError。
vars = {};
// Get the array of current variables
if (cache[msg.guild.id]) {
cache[msg.guild.id].variables.forEach(sv => {
if (sv.type == 'Text' || sv.type == 'Number') {
vars[sv.name] = sv.value;
console.log(vars[sv.name] + ' ' + sv.name);
}
});
console.log(vars);
Object.keys(action).forEach(e => {
try {
var newVal = eval('`' + action[e] + '`');
action[e] = newVal;
}
catch(err) {
console.log(err);
}
//console.log(`key=${e} value=${action[e]}`)
});
}
我得到的错误是:“ReferenceError:c未定义”,其中“c”是属性名。
{ c: 'ok' }
下面是cache变量中的内容:
{
variables: [ { name: 'c', value: 'ok', type: 'Text' } ]
}
以及
action[e]
${vars[c]}