Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果不使用eval(),如何在使用回调时更新函数包装中的条件?_Javascript_Security_While Loop_Eval - Fatal编程技术网

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()
内,因为条件可能涉及其他变量,但它正在工作。我建议编辑你的代码片段。谢谢你的回答!