我写了下面的代码,让自己感到困惑。
if(condition1)
if(condition2){
doStuff()
}
else {
doOtherStuff();
}
当它像这样缩进时,看起来其他属于condition1 if。但是如果我们改变一些空格,看起来它就是条件2的一部分,如果是这样的话:
if(condition1)
if(condition2){
doStuff()
} else {
doOtherStuff();
}
那它属于哪个?我为条件1添加了括号,以便更清楚,但哪一个是正确的?
答案 0 :(得分:3)
它属于 condition2 if
声明。
原因在于,由于 condition1 if语句不用括号({}
)包裹它的正文,它假设它的正文包含一个语句。查看 condition2 if
语句(包括else
),它是一个有效的(if/else
)语句,因此它被视为单件。
如果你想让else
属于外if
,你必须将第一个的主体包在括号中。
if (condition1) {
if (condition2) {
}
} else {
doOtherStuff();
}
一般来说,使用括号({}
)包装条件结构和循环的主体总是是好的做法(即使它们包含单个嵌套语句),因为代码变得更易读和可维护。
答案 1 :(得分:0)
它属于condition2
。如果您想将其归属于condition1
,则必须使用括号
if(condition1) {
if(condition2){
doStuff()
}
} else {
doOtherStuff();
}
答案 2 :(得分:0)
你是对的,它与最后的那个匹配,即你的内心if。如果你想让其他部分与外部if相关联,你应该明确地使用大括号,如:
if(condition1) {
if(condition2){
doStuff()
}
} else {
doOtherStuff();
}