<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 逻辑运算符: 与、或、非运算符, 结果是一个boolean值
// && 且(与)运算符
// || 或运算符
// ! 非运算符
// && 与运算符: 全部为真才为真, 一个为假就是假
console.log(true && false); // false 一个为假就是假
console.log(false && false); // false 一个为假就是假
console.log(true && true); // true 全部为真才为真
var x = 6, y = 3;
console.log(x < 10 && y > 1); // true 全部为真才为真
// 与运算符的特殊用法: 开关, 根据状态的true 和 false, 决定第二个语句是否执行
var login = false;
login && console.warn("登陆了"); // 一个为假就是假, 第二个语句不会执行
var flash = true;
flash && console.log("msg => 开灯了"); // 全部为真才是真, 需要执行第二个语句
// || 或运算符: 一个为真就是真, 全部为假才是假
console.log(true || false); // true
console.log(false || false); // false
console.log(true || true); // true
var x = 6, y = 1;
console.log(x < 10 || y >= 1); // true
// || 或运算符的特殊用法: 默认值
var city = "肇庆" || "北京"; // 一个为真就是真, 第二个语句不需要执行
console.log(city + ", 今天是晴天!"); // 肇庆, 今天晴天
var city = "" || "北京"; // 全部为假才是假, 所以需要执行第二个语句
console.log(city + ", 今天是晴天!"); // 北京, 今天晴天
// ! 非运算符: 取反, 把真值变假, 把假值变真 (非运算会把其他数据类型转成布尔类型)
console.log(!true); // false
console.log(!false); // true
// !!, 通过取反两次, 把其他数据类型转换为正确的布尔类型
console.log(!!0); // true
</script>
</body>
</html>