背景
开发过程中,我们经常用的最多的就是条件表达式了,我们知道&&表示逻辑与,代表两个条件都必须满足才会执行。而||代表逻辑逻辑或,即表示两种只有一个满足即可。
关于逻辑与和或的执行顺序,因为有很长一段时间没写代码了,今天在写&&和||逻辑时突然有点蒙圈,关于其执行顺序稍微有不确定。
逻辑与的顺序
当用 if (A && B ) { // 代码执行 } 这一样代码时,会先执行逻辑A,如果A是真的话,此时if判断逻辑成立,不会执行逻辑B,直接进入代码区执行。如果A是假,那会继续执行判断B,如果B是真,此时,此时if判断逻辑成立并进入代码区执行。
这样的判断逻辑,应该是我们经常会用到的,可以100%确认,其执行顺序是从左到右,左边只要一成立,右边不会执行。
逻辑或的顺序
那么对于逻辑或的执行顺序呢是否也一样,因为逻辑或成立只要两者其中一个是真就if判断成立,所以此时我有点不是很确信它的执行逻辑是否也是从左到右,一旦成立就右边不执行。
我们直接用代码来验证下吧。(以下是用OC方法验证的,像其他语言如Java、JavaScript、C等逻辑都是一样的)
- (void)demo1{
if ([self function1] || [self function2]) {
NSLog(@"逻辑1");
} else {
NSLog(@"逻辑2");
}
}
- (BOOL)function1{
NSLog(@"%s",__FUNCTION__);
return YES;
}
- (BOOL)function2{
NSLog(@"%s",__FUNCTION__);
return NO;
}
看下控制器Log输出
2022-04-02 21:38:57.445827+0800 test[1321:2488493] -[ViewController function1]
2022-04-02 21:38:57.445984+0800 test[1321:2488493] 逻辑1
结论
很明显,||逻辑或和逻辑与的执行顺序也是一样的,从左到由执行,一旦左边成立,右边不会执行判断。