У меня есть некоторые переменныеОценить строку в JavaScript без Eval
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
)
Знаете ли вы скобки обозначения, такие как 'окна [ 'а'] == true', если 'a' является глобальной переменной? – 4castle
Не ссылайтесь на переменные, используя строки. Зачем вам это нужно? Переменные, имена которых заданы элементами, уже имеют значения - зачем их «оценивать» их? Ваш последний пример можно легко обрабатывать как функцию, написанную 'add (({a, b}) => a + b) ({a: 1, b: 3})'. –
Давайте будем ясно, хотя ... 'eval' - это инструмент, который обычно используется для зла. Его можно использовать отлично и правильно, если использовать осторожно и экономно. Я никогда не отправлял с ним какой-либо библиотечный код, но я также, вероятно, никогда не столкнулся с каким-то безумием, которое вы пытаетесь сделать. :) В самом деле, ваша проблема, скорее всего, заключается в том, как вы пытаетесь атаковать ее в первую очередь, а не в какой-то магической потребности в конструкции, подобной eval. –