Javascript 从内部函数中中断while循环';身体
如果我有:Javascript 从内部函数中中断while循环';身体,javascript,while-loop,break,Javascript,While Loop,Break,如果我有: while(foo) { var x = bar.filter(function(){ /* any problems with using `break;` here to exit the while-loop? */ }); bar(), baz(); // and so on... } 是否会有任何奇怪或意外的行为?您不能在while循环内的闭包函数中使用break,但是,您可以使用false作为显式返回值,向循环发出中断: var count = 0,
while(foo) {
var x = bar.filter(function(){ /* any problems with using `break;` here to exit the while-loop? */ });
bar(), baz();
// and so on...
}
是否会有任何奇怪或意外的行为?您不能在while循环内的闭包函数中使用
break
,但是,您可以使用false
作为显式返回值,向循环发出中断:
var count = 0,
foo = true;
while(foo) {
var bar = function() {
if (++count < 23) {
console.log(count);
return true;
} else {
return false;
}
};
if (bar() === false) { break; }
}
中断
中断它直接出现在其中的循环;如果函数(您的过滤器
迭代器)中的break
位于循环(或开关)之外,则这是一个语法错误
向函数设置的while
添加条件:
var stop = false;
while(foo && !stop) {
var x = bar.filter(function(){
if (someCondition) {
stop = true;
}
});
bar(), baz();
}
当然,也可以直接设置foo
:
while(foo) {
var x = bar.filter(function(){
if (someCondition) {
foo = false;
}
});
bar(), baz();
}
…但我不知道什么是foo,也不知道这是否合理
如果需要在断开状态下不执行bar
和baz
,则需要添加防护:
var stop = false;
while(foo && !stop) {
var x = bar.filter(function(){
if (someCondition) {
stop = true;
}
});
if (!stop) {
bar(), baz();
}
}
或
如前所述,不能在函数体内部使用
break
但根据您要完成的具体内容,您也可以切换逻辑,直到中断时才重复,但在需要时从函数内部触发下一次迭代:
function filterFunc() {
if (condition) {
iter();
}
}
function iter() {
var x = bar.filter(filterFunc);
bar(), baz();
}
解释原始任务
break当从函数中调用code>时,它将不起作用,因此yes是一个问题plenty@zerkms有什么不清楚?@musefan您知道的任何解决方法?您不能从嵌入式功能中找到。-1:为什么您自己决定OP不再需要过滤器功能?哦,我明白了。我更喜欢使用防护装置,使其更简单。
while(foo) {
var x = bar.filter(function(){
if (someCondition) {
foo = false;
}
});
if (foo) {
bar(), baz();
}
}
function filterFunc() {
if (condition) {
iter();
}
}
function iter() {
var x = bar.filter(filterFunc);
bar(), baz();
}