#javascript
var symbol = ['==', '>=']
var a = 2
var b = 1
if (a symbol[0] b) {
....
}
Как написать такой код синтаксически верным и рабочим? Нужно чтобы знак сравнения
был в переменной, которая будет переопределяться. Или такое не возможно?
Ответы
Ответ 1
Не взлетит. Имхо только использовать eval, но я бы не стал. В качестве варианта я бы сделал хеш функций сравнения и подставлял аргументы в выбранную по ключу функцию (в качестве ключа - операция) var oper = { '==': function (a, b) { return a == b; }, '>=': function (a, b) { return a >= b; } }; var a = 2; var b = 1; var ix = '=='; if (oper[ix](a, b)) { .... }Ответ 2
tutankhamun Предложил занести операции сравнения в хеш - но в некоторых случаях можно вовсе не использовать их строковую форму - а использовать напрямую функции. Ваш код может выглядеть так (я использую arrow functions для упрощения, обратите внимание что они не работают в IE и Safari): var symbol = [ (a, b) => a == b, (a, b) => a >= b ] var a = 2 var b = 1 if (symbol[0](a, b)) { .... }
Комментариев нет:
Отправить комментарий