1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script type="text/javascript"> 7 8 /* 9 * JS中为我们提供了三种逻辑运算符 10 * ! 非 11 * - !可以用来对一个值进行非运算 12 * - 所谓非运算就是值对一个布尔值进行取反操作, 13 * true变false,false变true 14 * - 如果对一个值进行两次取反,它不会变化 15 * - 如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反 16 * 所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值 17 * 可以为一个任意数据类型取两次反,来将其转换为布尔值, 18 * 原理和Boolean()函数一样 19 * 20 * && 与 21 * - &&可以对符号两侧的值进行与运算并返回结果 22 * - 运算规则 23 * - 两个值中只要有一个值为false就返回false, 24 * 只有两个值都为true时,才会返回true 25 * - JS中的“与”属于短路的与, 26 * 如果第一个值为false,则不会看第二个值 27 * 28 * || 或 29 * - ||可以对符号两侧的值进行或运算并返回结果 30 * - 运算规则: 31 * - 两个值中只要有一个true,就返回true 32 * 如果两个值都为false,才返回false 33 * - JS中的“或”属于短路的或 34 * 如果第一个值为true,则不会检查第二个值 35 */ 36 37 //如果两个值都是true则返回true 38 var result = true && true; 39 40 //只要有一个false,就返回false 41 result = true && false; 42 result = false && true; 43 result = false && false; 44 45 //console.log("result = "+result); 46 47 //第一个值为true,会检查第二个值 48 //true && alert("看我出不出来!!"); 49 50 //第一个值为false,不会检查第二个值 51 //false && alert("看我出不出来!!"); 52 53 //两个都是false,则返回false 54 result = false || false; 55 56 //只有有一个true,就返回true 57 result = true || false; 58 result = false || true ; 59 result = true || true ; 60 61 //console.log("result = "+result); 62 63 //第一个值为false,则会检查第二个值 64 //false || alert("123"); 65 66 //第一个值为true,则不再检查第二个值 67 //true || alert("123"); 68 69 70 71 var a = false; 72 73 //对a进行非运算 74 a = !a; 75 76 //console.log("a = "+a); 77 78 var b = 10; 79 b = !!b; 80 81 //console.log("b = "+b); 82 //console.log(typeof b); 83 84 </script> 85 </head> 86 <body> 87 </body> 88 </html>
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 7 <script type="text/javascript"> 8 9 /* 10 * && || 非布尔值的情况 11 * - 对于非布尔值进行与或运算时, 12 * 会先将其转换为布尔值,然后再运算,并且返回原值 13 * - 与运算: 14 * - 如果第一个值为true,则必然返回第二个值 15 * - 如果第一个值为false,则直接返回第一个值 16 * 17 * - 或运算 18 * - 如果第一个值为true,则直接返回第一个值 19 * - 如果第一个值为false,则返回第二个值 20 * 21 */ 22 23 //true && true 24 //与运算:如果两个值都为true,则返回后边的 25 var result = 5 && 6; 26 27 28 //与运算:如果两个值中有false,则返回靠前的false 29 //false && true 30 result = 0 && 2; 31 result = 2 && 0; 32 //false && false 33 result = NaN && 0; 34 result = 0 && NaN; 35 36 37 //true || true 38 //如果第一个值为true,则直接返回第一个值 39 result = 2 || 1; 40 result = 2 || NaN; 41 result = 2 || 0; 42 43 //如果第一个值为false,则直接返回第二个值 44 result = NaN || 1; 45 result = NaN || 0; 46 47 result = "" || "hello"; 48 49 result = -1 || "你好"; 50 51 52 console.log("result = "+result); 53 54 </script> 55 56 </head> 57 <body> 58 </body> 59 </html>