1.布尔值情况

  1. /*
  2. * JS中为我们提供了三种逻辑运算符
  3. * ! 非
  4. * - !可以用来对一个值进行非运算
  5. * - 所谓非运算就是值对一个布尔值进行取反操作,
  6. * true变false,false变true
  7. * - 如果对一个值进行两次取反,它不会变化
  8. * - 如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反
  9. * 所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值
  10. * 可以为一个任意数据类型取两次反,来将其转换为布尔值,
  11. * 原理和Boolean()函数一样
  12. *
  13. * && 与
  14. * - &&可以对符号两侧的值进行与运算并返回结果
  15. * - 运算规则
  16. * - 两个值中只要有一个值为false就返回false,
  17. * 只有两个值都为true时,才会返回true
  18. * - JS中的“与”属于短路的与,
  19. * 如果第一个值为false,则不会看第二个值
  20. *
  21. * || 或
  22. * - ||可以对符号两侧的值进行或运算并返回结果
  23. * - 运算规则:
  24. * - 两个值中只要有一个true,就返回true
  25. * 如果两个值都为false,才返回false
  26. * - JS中的“或”属于短路的或
  27. * 如果第一个值为true,则不会检查第二个值
  28. */

2.非布尔值情况

  1. <script type="text/javascript">
  2. /*
  3. * && || 非布尔值的情况
  4. * - 对于非布尔值进行与或运算时,
  5. * 会先将其转换为布尔值,然后再运算,并且返回原值
  6. * - &&与运算:
  7. * - 如果第一个值为true,则必然返回第二个值
  8. * - 如果第一个值为false,则直接返回第一个值
  9. *
  10. * - ||或运算
  11. * - 如果第一个值为true,则直接返回第一个值
  12. * - 如果第一个值为false,则返回第二个值
  13. *
  14. */
  15. //true && true
  16. //与运算:如果两个值都为true,则返回后边的
  17. var result = 5 && 6;
  18. //与运算:如果两个值中有false,则返回靠前的false
  19. //false && true
  20. result = 0 && 2;//0
  21. result = 2 && 0;//0
  22. //false && false
  23. result = NaN && 0;//NaN
  24. result = 0 && NaN;//0
  25. //true || true
  26. //如果第一个值为true,则直接返回第一个值
  27. result = 2 || 1;
  28. result = 2 || NaN;
  29. result = 2 || 0;
  30. //如果第一个值为false,则直接返回第二个值
  31. result = NaN || 1;//1
  32. result = NaN || 0;//0
  33. result = "" || "hello";
  34. result = -1 || "你好";
  35. console.log("result = "+result);
  36. </script>