Javascript 为什么我的函数不返回错误字符串?
我有下面的函数。它做它需要做的事情,只是它不返回我想要的错误字符串 它总是返回“” 我已经设置了断点,并看到它在每个错误案例中逐步出现,但它没有返回到那里。它在函数的末尾返回 我迷路了,我肯定我犯了一个非常愚蠢的错误,但我不明白 请帮我留几根头发:)Javascript 为什么我的函数不返回错误字符串?,javascript,typescript,knockout.js,Javascript,Typescript,Knockout.js,我有下面的函数。它做它需要做的事情,只是它不返回我想要的错误字符串 它总是返回“” 我已经设置了断点,并看到它在每个错误案例中逐步出现,但它没有返回到那里。它在函数的末尾返回 我迷路了,我肯定我犯了一个非常愚蠢的错误,但我不明白 请帮我留几根头发:) 正如Alex Bykov所指出的,您的forEach函数不会导致返回 你的问题是为什么不呢 函数的返回值未定义 返回 值未定义 这意味着您所能做的任何事情都不会生成您可以使用的返回值。此外,根据MDN,除了抛出异常之外,没有其他方法可以停止或中断循
正如Alex Bykov所指出的,您的
forEach
函数不会导致返回
你的问题是为什么不呢
函数的返回值未定义
返回
值未定义
这意味着您所能做的任何事情都不会生成您可以使用的返回值。此外,根据MDN,除了抛出异常之外,没有其他方法可以停止或中断循环
除了通过以下方法之外,没有其他方法可以停止或中断forEach()循环
正在引发异常。如果需要这种行为,可以使用forEach()方法
如果工具不正确,请使用普通循环。如果您正在测试
数组元素,并且需要一个布尔返回值
可以使用every()或some()代替。如果可用,请选择新方法
find()或findIndex()可用于在为true时提前终止
谓词也是
这意味着您需要在forEach
循环中抛出异常,然后捕获异常并返回如下字符串
(除非您使用普通for循环,否则您可以随心所欲)
您的函数得到了唯一的返回值=
”
。forEach
方法不会为您的validatePanel
函数返回值。另外,还不清楚这是什么。查询isOk会让我变傻,但为什么不呢?更好的是,我如何让它回归呢?这就像一个魅力,但似乎难以置信的黑客。。。我想我可以选择for循环。@84我自己会建议使用for循环,我理解为什么是这样。但有时这就是饼干的制作方法crumblies@Puzzle84如果要中断循环而不是执行for循环,可以使用array.some函数而不是forEach。
public validatePanel = () => {
this.Queries().forEach(function(q, i) {
if(q.from() == "" || q.from() == null || q.from() == undefined) {
return "Please select a database";
}
if(q.select().length > 0) {
q.select().forEach(function(s, j) {
if(s.selectoption() == "" || s.selectoption() == null || s.selectoption() == undefined){
return "Please select a stat to show";
}
});
}
if(q.where().length > 0) {
q.where().forEach(function(w, j) {
if(w.whereoption() == "" || w.whereoption() == null || w.whereoption() == undefined){
return "Please select a filter to filter on";
}
if(w.wherevalue() == "" || w.wherevalue() == null || w.wherevalue() == undefined) {
return "Please select a value for your filter";
}
});
}
});
return "";
}
try {
this.Queries().forEach(function(q, i) {
if(q.from() == "" || q.from() == null || q.from() == undefined) {
throw "Please select a database";
}
if(q.select().length > 0) {
q.select().forEach(function(s, j) {
if(s.selectoption() == "" || s.selectoption() == null || s.selectoption() == undefined){
throw "Please select a stat to show";
}
});
}
if(q.where().length > 0) {
q.where().forEach(function(w, j) {
if(w.whereoption() == "" || w.whereoption() == null || w.whereoption() == undefined){
throw "Please select a filter to filter on";
}
if(w.wherevalue() == "" || w.wherevalue() == null || w.wherevalue() == undefined) {
throw "Please select a value for your filter";
}
});
}
});
}
catch(err) {
console.log(error);
}