!
非
- ! 可以用来对一个值进行非运算
所谓非运算就是指对一个布尔值进行取反操作。
true 变 false,false 变 true
var a = true;
a = !a;
console.log(a); // false
如果对一个值进行两次取反,它不会变化
var a = true;
a = !!a; // true
如果对非布尔值进行取反,则会将其转换为布尔值,然后在去反,
- 我们可以利用该特点,来将一个其它的数据类型转换为布尔值
可以为一个任意数据类型取两次反,来将其转换为布尔值。原理和 Boolean()函数 一样。
var a = 10;
a = !!a; // true
console.log(typeof a); // boolean
&&
与&& 可以对符号两侧的值进行与与运算并返回结果
运算规则:
- 两个值中只要有一个值为 false 就 返回 false
- 只有两个值都为 true 时,才返回 true
JS 中的 与 属于短路的 与var a = true && true; // true
a = false && true; // false
如果第一个值为 false,则不会看第二个值
var a = flase && true; // flase
第一个值为 true,会检查第二个值
var a = true && flase; // false
第一个值为 false,不会检查第二个值
var a = false && true; // false
||
或|| 可以对符号两侧的值进行或运算并返回结果
运算规则:
- 两个值中只要有一个 true,就返回 true
- 如果两个值都为 false,才返回 false
JS 中的 或 属于短路的 或var a = true || false; // true
a = flase || false; // flase
如果第一个值为 true,则不会检查第二个值
&&
||
非布尔值的情况
- 对于非布尔值进行 与 或 运算时,
- 会先将其转换为 布尔值,然后在运算,并且 返回原值,不会返回 true 和 false
与 运算:(找 flase)
- 如果第一个值为 true,则必然返回第二个值
如果第一个值为 false,则直接返回第一个值
var result = 1 && 1; // 返回 1
result = 0 && 1; // 返回 0
或 运算:(找 true)
如果第一个值为 true,则直接返回第一个值
- 如果第一个值为 false,则返回第二个值
var result = 0 || 1; // 返回 0
result = "" || 1 // 返回 1