我有一些变数
var a = true;
var b = false;
var c = true;
和一个数组
var array = ['a', 'b', 'c'];
如何将元素评估为相应的真值?
我知道我可以使用eval()
,但由于它被认为是有害的,还有其他选择吗?
在某些情况下,我宁愿将“真相”分配为
var truth = {'a': true, 'b': false, 'c': true};
似乎eval()
没有采用其他选项(例如eval('a+b', {a: 1, b: 3}) = 4
)
答案 0 :(得分:1)
虽然这并没有回答你的问题,但它应该做你需要做的事情。
不是制作这些变量,而是将它们作为本地对象的属性 - 然后使用它们。
var obj = {
a: true,
b: false,
c: true
};
var array = ['a', 'b', 'c'];
array.forEach(function(val) {
console.log("Value ", val, "is ", obj[val]);
});
由于事物的命名方式,您也可以访问
obj.a = false;
或
obj["b"] = true;
答案 1 :(得分:0)
不幸的是,Javascript只提供了eval
,它适用于程序员无法控制的范围(在Python中,您可以提供全局和本地环境)。
要实现您想要的目标,解决方案就是实现您自己的语言。这可能看起来很重要,但实际上它可能是可行的,甚至是合理的,这取决于你需要它。
如果仅需要配置,那么Javascript世界中的解决方案就是使用单个JSON对象,放弃在配置本身中使用小辅助函数或条件的可能性。
答案 2 :(得分:0)
如果您的变量是全局变量,则可以使用window
或this
(当this
指向窗口对象时)。
var a = true;
var b = false;
var c = true;
var array = ['a', 'b', 'c'];
for(var i = 0; i < array.length; i++){
console.log(this[array[i]]);
}