<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>javascript逻辑与</title>
<!--
逻辑与(&&)个人理解:
前提条件:
-逻辑与的判定顺序:从左到右;
-只要遇到假/null/undefined/NaN就不会再往下判定。直接返回第一个假/null/undefined/NaN的值
-全真时返回最后一个真的值
1)操作数都是布尔值
全真时:返回true
1假或多假:返回false
2)操作数为多类型混合(表达式、布尔值等其他类型)
1假/多假/全假:返回第一个假
全真:返回最后一个真
3)特殊情况:操作数为null/undefined/NaN
只要含有null/undefined/NaN,就会返回null/undefined/NaN;
如果null/undefined/NaN同时存在,则返回null/undefined/NaN中的第一个。
-->
</head>
<body>
<script>
var a=10,b="10",c=20,d="",e=0,f="dd",g;
/* 逻辑与:布尔型 */
console.log(a==b && a<c);//true
console.log(a==b && a>c);//false
/* 逻辑与:混合型 */
console.log(e && a);//0,第一个操作数e假,返回第一个,e
console.log(a && d);//"",第一个操作数a真,返回第二个,d
console.log(a && b && c);//20,a\b\c都为true,返回最后一个,c
console.log(a && d && e);//"",a真,d假,e假,返回第一个假,d=""
console.log(a && b && c);//20,全真,返回最后一个真
console.log(null && a && b && c);//null
console.log((a-f) && a && b);//NaN
console.log(g && a && b);//undefined
console.log(NaN && null && defined);//NaN,这三个谁是第一返回谁
</script>
</body>
</html>
05-27 13:56