有沒有辦法翻譯像下面的邏輯操作(由於用戶輸入使用字符串)?或者我將不得不檢查每一種可能性? (> < => == = <等)將字符串轉換爲javascript中的操作
var x = 5;
var y = 3;
var operator = '>'
if (x operator y)
doSomething();
|
|
v
if (x > y)
doSomething();
有沒有辦法翻譯像下面的邏輯操作(由於用戶輸入使用字符串)?或者我將不得不檢查每一種可能性? (> < => == = <等)將字符串轉換爲javascript中的操作
var x = 5;
var y = 3;
var operator = '>'
if (x operator y)
doSomething();
|
|
v
if (x > y)
doSomething();
是,與對象和相應的功能,像
var comparer = {
'>': function (a, b) { return a > b; }
};
用途:
if (comparer[operator](x, y)) {
doSomething();
}
你應該改變自己的方式。
使用eval
您必須將所有操作員列入白名單,並對兩個輸入進行消毒。
根據您的需求構建您自己的界面。
可能會switch
:
switch (operator) {
case '>': if (x > y) doSomething();
}
可能會有一些更抽象,如:
ifArg(x).relatedWith(y).as(operator).then(doSomething);
可即使你寫你自己的小翻譯(語法/詞法分析器)和您的用戶可以在其上編寫程序。
它將用於Web應用程序,用戶可以在其中創建自己的 小型(簡單)應用程序以使用數據。 - Mathieu Brouwers
你不應該在這裏使用的是eval
。
你可以使用eval(),但這對用戶輸入來說是邪惡的。 – Raman