条件取决于另一个条件:条件条件

时间:2017-03-01 14:17:40

标签: javascript

我已经实施了condition2,具体取决于condition1这样:

// condition1 comes from elsewhere
let condition2;
if(condition1){
    condition2='task.done'
}else{
    condition2='! task.done'
}
mappedTasks=tasks.map((task,idx)=>{
    if(eval(condition2)){
        return /* stuff */
    }else{
        return /* other stuff */
    }
});

但是,函数eval无法完成工作,我收到如下错误:

  

ReferenceError:未在eval中定义任务

我想知道是否有人知道实施该条件条件的最佳方法是什么。

现在代码适用于:

let condition2;
if(condition1){
    condition2=task=>task.done;
}else{
    condition2=task=>!task.done;
}
mappedTasks=tasks.map((task,idx)=>{
    if(condition2(task)){
        return /* stuff */
    }else{
        return /* other stuff */
    }
});

1 个答案:

答案 0 :(得分:4)

当你可以避免它时(不要使用它),不要使用eval

例如,您可以将第二个条件定义为函数(还有其他方法可以满足相同的结果):

if (condition1){
    condition2 = function (task) { return task.done; }
} else {
    condition2 = function (task) { return !task.done; }
}
mappedTasks = tasks.map((task,idx)=>{
    if (condition2(task)) {
        return /* stuff */
    } else {
        return /* other stuff */
    }
});