逻辑中断
原则:“缺啥返回啥”
逻辑中断(短路运算)的原理:当有多个表达式(值)时,左边表达式的值可以确定时,就不再继续运算右边表达式的值。
※0
、" " (空字符串)
、' '(空字符串)
、null(空值)
、undefined(未定义)
、NaN(非数值)
都表示为false
,除这些之外的为true。
※逻辑非
始终返回布尔类型
的变量。
※逻辑中断非常重要,它会影响程序运行的结果。如下:
var num = 0;
document.write(123 || num++); ※逻辑中断,返回值123,之后的代码不再继续运行
document.write(num); num的值仍为0
逻辑与的逻辑中断
执行过程 :
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是false,则直接返回这个操作数的值(注意,返回的是转换前的原值
,不一定是布尔类型),中断后面操作数的处理;否则继续处理下一个操作数。如果直到最后一个操作数仍然对应布尔变量true,则返回最后这个操作数的值。
语法 :
逻辑与&&,当两边全为true时,结果才为true
把&&想象成是两个true,它缺false所以应该返回个false
true true
表达式1 && 表达式2
从左往右数,哪个表达式是false就返回谁的原值,并且中断停止不再继续。
如果全都是true就返回最后一个表达式2的原值。
例题 :
<script type="text/javascript">
document.write(123 && 456); 返回值为456
document.write(0 && 456); 返回值为0
document.write(0 && 1 + 2 && 456 * 56789); 返回值为0
document.write(" " && 1 + 2 && 456 * 56789); 返回值为空白(空的字符串)
</script>
逻辑或的逻辑中断
执行过程 :
javascript依次获取每一个操作数,将它们转换为布尔变量,如果是false,则直接返回这个操作数的值(注意,返回的是转换前的原值
,不一定是布尔类型),中断后面操作数的处理;否则继续处理下一个操作数。如果直到最后一个操作数仍然对应布尔变量false,则返回最后这个操作数的值。
语法 :
逻辑或||,当两边全为false时,结果才为false
把||想象成是两个false,它缺true所以应该返回个true
false false
表达式1 || 表达式2
从左往右数,哪个表达式是true就返回谁的原值,并且中断停止不再继续。
如果全都是false就返回最后一个表达式2的原值。
例题 :
<script type="text/javascript">
document.write(123 || 456); 返回值为123
document.write(123 || 456 || 456 + 123); 返回值为123
document.write(0 || 456 || 456 + 123); 返回值为456
</script>
我寻见一片海 碧蓝且耀着光
大片船只航行其上 都向着远方
Shared by Foriver_江河