Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Знаки сравнения в переменной javaScript

#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)) { .... }

Комментариев нет:

Отправить комментарий