在JavaScript中,是否有一种方法可以从if块内跳到else块?
这是一个例子:
if (is_valid) {
some code;
if (!something_else_is_valid) {
// Skip to else to handle error;
}
} else {
handle_error_here;
}
我知道我可以将handle_error功能移到另一个功能,但是我不想这么做。
感谢您的回答/评论!
答案 0 :(得分:2)
从不说从不: 是 -他们会讨厌你这样做,但嘿:
var else_ = false
var if_ = true
IF:
{
if(if_){
console.log("entered IF BLOCK")
var second = false
if(!second){
console.log("exits to ELSE BLOCK")
else_ = true
break IF;
console.log("this will not be executed - its skipped")
}
}
}
ELSE: {
if(!else_) break ELSE;
console.log("entered ELSE BLOCK")
}
相应地标记您的块,然后可以将if块退出到else块中;)
答案 1 :(得分:1)
不,一旦输入了if
,就无法回溯,尽管您可以使用is_valid
中的false
递归调用包含函数:
function doTest(is_valid) {
if (is_valid) {
// some code;
if (!something_else_is_valid) {
return doTest(false);
}
} else {
// handle_error_here;
}
}
您也可以使用try/catch
(尽管理想情况下例外是例外,而不是控制流构造):
try {
if (!is_valid) {
throw new Error();
}
// some code;
if (!something_else_is_valid) {
throw new Error();
}
} catch(e) {
// handle_error_here;
}
比在两个可以调用的函数中处理错误要好得多,但您表示不想这样做。
答案 2 :(得分:1)
在JavaScript中,是否可以从if块内跳到else块?
否,因为已经满足该条件,因此无法返回并进入else
条件。
您可以使用语句switch
。 break
关键字停止下游执行。如果something_else_is_valid
为假,则不会发生break
,因此switch
块将到达default
情况,即“错误情况”。
function A(is_valid, something_else_is_valid) {
switch(is_valid) {
case true:
// some code
if (something_else_is_valid) {
// do somthing
break;
} // else, will reach default case.
default:
throw new Error("Wrong!");
// handle_error_here
}
}
A(true, false);
答案 3 :(得分:0)
不,您不能-您必须结合条件:
if (is_valid && something_else_is_valid) {
//Some code
} else {
handle_error_here();
}