一、逻辑与(&&)、或(||)、非(!)
用法:
1、&&:两边均为true,结果为true,有任意一边为false,结果为false;
2、||:任意一边为true,结果为true,两边均为false,结果为false;
3、!:结果取反;
1、与 &&
<script>
console.log(true && true); //true
console.log(true && false); //false
console.log(false && false); //false
</script>
2、或 ||
<script>
console.log(true || true); //true
console.log(false || true); //true
console.log(false || false); //false
</script>
3、非 !
<script>
console.log(!true); //false
console.log(!false); //true
</script>
二、运算符连续使用
优先级顺序:
1、一元运算总是优先于二元运算,!的优先级高于&&和||;
2、&&的优先级高于||;
优先级:! > && > ||
<script>
console.log(!true && false || true && !false);
//false && false || true && true
//false || true
//true
</script>
三、其他数据类型参与的逻辑运算
1、逻辑非 !
表示为false:0、undefined、null、NaN、''、false六大类,其他的都为true
<script>
console.log(!null); //true
console.log(!NaN); //true
console.log(!' '); //false
</script>
ps:第三个为空格字符串,与空字符串不同
2、逻辑或 ||
<script>
console.log('a' || 'b'); //'a'
console.log('' || 'b'); //'b'
var a = 6;
var b = a || 10; //当a不为零时,将a赋值给b;当a为零时,将默认值10赋值给b
console.log(b); //6
</script>
3、逻辑与 &&
短路算法:当计算机识别到前一个为假时,会直接终止与逻辑运算并判定结果为假,只有前一个为真时才会继续判定后一个是否为真;
<script>
console.log(4 && 2); //第一个数据为4,转换为布尔值结果为true,&&运算结果由第二个数据决定,返回2
console.log(true && 2); //第一个数据为true,&&运算结果由第二个数据决定,返回2
console.log(0 && 2); //第一个数据为0,转换为布尔值结果为false,&&运算结果为假,返回0
console.log(false && 2);//第一个数据为false,&&运算结果为假,返回false
</script>
逻辑与运算的数据为非布尔类型时,返回值为其中的一个数值,而不是返回true或false;
<script>
var age = parseInt(prompt("请输入你的年龄"));
(age>=18) && alert("你已经成年,可以上网");
(age<18) && alert("你未成年,不可以上网");
</script>