2013-11-28 4 views
0

Запись функции в JavaScript. План - это функция, создающая объект, который требует булевых операторов в качестве параметров. Что-то вроде этого ->Является ли это Eval Evil?

var foo = new fuzz("pie < squirrel", "monkey === banana"); 

Мой вопрос: это зло?

* Примечание - * Внутри функции 'fuzz' Я буду проверять значения параметров. (Проверьте строку string.length и т. Д.). Я думаю, что это то, как нужно использовать eval, у него такая плохая репутация на t'up-сети.

Благодаря

+4

Почему бы не передать в этих заявлениях анонимные функции? – helpermethod

+6

Код, который вы показываете как таковой, отсутствует. Код, в котором вы фактически используете 'eval', может быть, не сам по себе. Но, возможно, есть лучшее решение в целом, которое вообще не нуждается в 'eval'. Мы не можем сказать без лишнего контекста. – deceze

+2

Откуда берутся значения, которые используются в булевых выражениях? Есть ли какая-то причина, по которой вы не можете просто передавать логические значения? – Guffa

ответ

3

Суммируя выводы в комментариях: написать простое правило двигатель оценки! Например .:

var variables = { ... }; 

function niceEval(condition) { 
    var operands = condition.match(/(\w+)\s+(\S+)\s+(\w+)/); 

    switch (operands[2]) { 
     case '<' : 
      return variables[operands[1]] < variables[operands[3]]; 
     ... 
    } 
} 

Это также дает вам гораздо больше контроля над возможно встречающимися ошибками, чем слепо eval ИНГ строки.

+0

Да, это красивый чувак. Благодарю. – User2

Смежные вопросы