<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>非布尔值的逻辑与或非</title>
<script type="text/javascript">
/*
对于非布尔值进行与或非逻辑运算时
会先将其转换为布尔值,然后再运算,并且返回原值
*/
//与运算:如果两个值都为true,则返回后边的
var result = 1 && 2;
console.log("result = "+result);//2
result = 2 && 1;
console.log("result = "+result);//1
//与运算:如果两个值中有false,则短路原理,返回最先检测到的false
var result2 = 0 && false;
console.log("result2 ="+result2);
var result2 = false && 0;
console.log("result2 ="+result2);
var result2 = NaN && 1;
console.log("result2 ="+result2);
//或运算:如果第一个值为false,则返回后边的
var result3 = 0 || NaN;
console.log("result3 = "+result3);//NaN
result3 = NaN || 0;
console.log("result3 = "+result3);//0
//或运算:如果两个值中有true,则短路原理,返回最先检测到的true
var result4 = 1 || 88;
console.log("result4 ="+result4);
var result4 = 88 || 1;
console.log("result4 ="+result4);
var result4 = " " || 1;
console.log("result4 ="+result4);
/*
怎样记忆呢?
- 短路原理是一类,很简单,&&如果碰到false,则短路
||如果碰到true,则短路
- 第二类就是整个表达式的值可以确定,然后就弹出。其实短路原理也属于这类
比如:1 && NaN,读到1的时候,表达式的值不能确定,然后就需要继续读到NaN,这时候,表达式的值确定,那就返回NaN
1 && true,读到1的时候,表达式的值不能确定,然后就需要继续读到true,这时候,表达式的值确定,那就返回true
false && 1,读到fasle的时候,表达式的值确定,然后就返回false
false||1,读到false的时候,表达式的值不能确定,然后继续读到1,表达式的值确定,然后就返回1
false||fasle,读到false的时候,表达式的值不能确定,然后继续读到fasle,表达式的值确定,然后就返回fasle
1||fasle,读到1的时候,表达式的值确定,然后就返回1
*/
</script>
</head>
<body>
</body>
</html>
21.非布尔值的逻辑与或非
最新推荐文章于 2022-08-06 11:14:24 发布