更好的理解是通过代码。假设我具有以下功能:
const firstFct = function() {
if(!valid) {
return 'error...';
}
return ...
}
我想使用第二个功能退出 firstFct 。而不是使用 if 。
const secondFct = function(value, msg) {
if(!value) {
return msg;
}
}
const firstFct = function() {
secondFct(valid, "error"); // this should exit **firstFct** only if !value
return ...
}
不确定是否可以通过返回来实现这一目标。
答案 0 :(得分:0)
您需要包装第一个调用的结果,以将结果与错误区分开来,以便提早退出。
const firstFct = function() {
if (!valid) {
return { error: 'error...' };
}
return ...
}
const firstFct = function() {
var temp = secondFct(valid, "error");
if (temp && typeof temp === 'object' && 'error' in temp) {
return temp.error;
}
return ...
}
或者使用exception handling并抛出错误。
答案 1 :(得分:0)
IMO,您需要在两种不同的逻辑之间进行区分:
换句话说:不要让secondFct
也确定它是否有效,并且抛出错误消息。
考虑一下:
const isValid = function(data) {
//some checks...
return flag; // true OR false
}
const app = function() {
// ...
if (isValid(data)) {
// handle error
return 'error ...'
}
return ...
答案 2 :(得分:0)
这里有一个可能的解决方案。尽管我不建议这样做。
(我推荐Nina Scholz版本)
function myFunction() {myFunction:{
console.log('i get executed');
break myFunction;
console.log('i do not get executed');
}}
现在有了这个原理,您可以:
const firstFct = function() {myScope: {
secondFct(valid, "error") ? break myScope: null;
}};
现在,如果您返回真实值,则会暂停执行,否则继续执行。 我知道这不是您想要的100%,但是它已经足够好了。
或者,您可以引发错误,这将暂停JavaScript执行。 我也不建议这样做。
通常,对于更复杂的示例,我们也许可以为您提供更好的帮助。 您的问题可能还有另一种解决方案。