Javascript 如果不使用eval(),如何在使用回调时更新函数包装中的条件?
我想定义一个函数,它将充当Javascript 如果不使用eval(),如何在使用回调时更新函数包装中的条件?,javascript,security,while-loop,eval,Javascript,Security,While Loop,Eval,我想定义一个函数,它将充当while语句(带有一些插件,但为了简单起见,我将在这里展示一个基本的包装器)。因此,将条件作为第一个参数,在每个循环中执行的回调作为第二个参数 我最初的版本是: const wrappedWhile=(条件,回调)=>{ 设有限=0; while(条件){ 回调(); 如果(避免有限>=10){ log(“中断while语句以避免无限循环”); 打破 } 避免有限++; } }; 设i=0; (i{ log('来自回调的日志:i=',i); 如果(i>=5){ lo
while
语句(带有一些插件,但为了简单起见,我将在这里展示一个基本的包装器)。因此,将条件作为第一个参数,在每个循环中执行的回调作为第二个参数
我最初的版本是:
const wrappedWhile=(条件,回调)=>{
设有限=0;
while(条件){
回调();
如果(避免有限>=10){
log(“中断while语句以避免无限循环”);
打破
}
避免有限++;
}
};
设i=0;
(i<5,()=>{
log('来自回调的日志:i=',i);
如果(i>=5){
log('循环继续,但应该停止');
}
i++;
});代码>您应该将函数作为条件传递,并在while循环中调用它
const wrappedWhile=(条件,回调)=>{
设i=0;
而(条件(i)){
收回(i);
如果(i>=10){
log(“中断while语句以避免无限循环”);
打破
}
i++;
}
};
包装时间((i)=>(i<5),(迭代)=>{
log('log from callback:i=',iteration);
});代码>您是否能够传递函数()=>i<5
?毕竟,您正在传递另一个函数……谢谢,它正在工作(正如wanjas在回答中所显示的)。它与while
语法有点不同,但我想它已经足够好了i
不必在wrappedWhile()
内,因为条件可能涉及其他变量,但它正在工作。我建议编辑你的代码片段。谢谢你的回答!