<!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)操作数都为布尔值
1真/多真/全真:返回true
全假:返回false
2)操作数为多类型混合(表达式、布尔值等其他类型)
1真/多真/全真:返回第一个真的值
全假/null/undefined/NaN:返回最后一个值
-->
</head>
<body>
<script>
var a=1,b="2",c=0,d="abc",e="",f,g=a-d;
/* 逻辑或:布尔型 */
console.log((a-b) || (a-abc));//-1,a-b为true,不再往下判定
console.log(a>10 || a<10);//true,a>10假,a<10真,1真返回true
/* 逻辑或:混合型 */
console.log(c || a || b || d);//1,返回第一个真a=1
console.log(c || e || null || undefined || g);//NaN,全假返回最后一个假
</script>
</body>
</html>