我已经实施了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 */
}
});
答案 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 */
}
});