// 逻辑运算符 && || !
// 表达式1&&表达式2
// 判断表达式1的值,转布尔类型假如为true,直接返回表达式2的值
// 表达式1的值转布尔类型假如为false,直接返回表达式1的值,
console.log(5 > 3 && 10 < 5) // true&&false false
console.log(5 > 3 && 10 > 5) // true&&true true
console.log(5 == 3 && 10 < 5) // false&& false false
console.log(5 && 6) // 6
console.log(10 > 8 && 0) // 0
console.log('' && 100) //''
// 逻辑与短路现象
// 表达式1的值转布尔类型假如为false,直接返回表达式1的值,此时不会执行表达式2的值
let i = 3
console.log(null && ++i)
console.log(i) //3
// || 判断表达式1的值,转布尔类型假如为true,直接返回表达式1的值
// 表达式1的值转布尔类型假如为false,直接返回表达式2的值,
console.log(5 > 3 || 10 < 5) //
console.log(5 > 3 || 10 > 5) //
console.log(5 == 3 || 10 < 5) //
console.log(5 || 6) // 5
console.log(10 > 8 || 0) // true
console.log('' || 100) // 100
let j = 3
console.log(null || ++j)
console.log(j) //4
console.log(!true)
console.log(!0)
let num = 'hello'
console.log(!!num) // true