短路运算(逻辑中断)
短路运算(逻辑中断):
当有多个表达式(值)时左边的表达式值可以确定结果时,就不再继续计算右边的表达式的值
我对短路运算(逻辑中断)的理解就是,就像家里面的家用电器,如果有一个短路跳闸,那么家里面全部的家用电器都不能用了
- 逻辑与:表达式1 && 表达式2
如果第一个表达式的值为真,则返回表达式2(多个表达式亦如此)
如果第一个表达式的值为假,则返回表达式1
我对逻辑与的逻辑中断的理解就是,它是为了在多个表达式中找到假的那个表达式,如果找不到就返回最后一个表达式的值
console.log('逻辑与的逻辑中断');
console.log(0 && 123); //0
console.log(123 && 0 && 456); //0
console.log('' && 123); //''
console.log(1 && 2 * 9 && 666); //666
var num = 0;
console.log(0 && num++); //0
console.log(num); //0
- 逻辑或:表达式1 || 表达式2
如果第一个表达式的值为真,则返回表达式1(多个表达式亦如此)
如果第一个表达式的值为假,则返回表达式2
我对逻辑或的逻辑中断的理解就是,它是为了在多个表达式中找到真的那个表达式,如果找不到就返回最后一个表达式的值
console.log('逻辑或的逻辑中断');
console.log(0 || 123); //123
console.log(123 || 0 || 456); //123
console.log('' || 123); //123
console.log(1 || 2 * 9 || 666); //1
var num = 0;
console.log(0 || ++num); //1 ++num是先自加后运算 num++是先运算后自加 这里++num=1 num=1
console.log(0 || num++); //1 ++num是先自加后运算 num++是先运算后自加 这里num++=1 num=2
console.log(num); //2
var n = 0;
console.log(123 || ++n); //123 ++n是先自加后运算 这里没有进行++n运算因为在前面取到真值已经中断了
console.log(123 || n++); //123 ++n是先自加后运算 这里没有进行n++运算因为在前面取到真值已经中断了
console.log(n); //0
全部代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>短路运算</title>
<script>
// 逻辑与
console.log('逻辑与的逻辑中断');
console.log(0 && 123); //0
console.log(123 && 0 && 456); //0
console.log('' && 123); //''
console.log(1 && 2 * 9 && 666); //666
var num = 0;
console.log(0 && num++); //0
console.log(num); //0
console.log('-----------------------------------');
console.log('逻辑或的逻辑中断');
console.log(0 || 123); //123
console.log(123 || 0 || 456); //123
console.log('' || 123); //123
console.log(1 || 2 * 9 || 666); //1
var num = 0;
console.log(0 || ++num); //1 ++num是先自加后运算 num++是先运算后自加 这里++num=1 num=1
console.log(0 || num++); //1 ++num是先自加后运算 num++是先运算后自加 这里num++=1 num=2
console.log(num); //2
var n = 0;
console.log(123 || ++n); //123 ++n是先自加后运算 这里没有进行++n运算因为在前面取到真值已经中断了
console.log(123 || n++); //123 ++n是先自加后运算 这里没有进行n++运算因为在前面取到真值已经中断了
console.log(n); //0
</script>
</head>
<body>
</body>
</html>