逻辑运算符
共有三个逻辑运算符:
- !: 非运算
- &&:与运算
- ||:或运算
1.非运算
- ! :非运算符,用来对一个布尔值进行取反
- 对一个布尔值取反两次,值不变
- 如果是非布尔值,则将其转换为布尔值再进行非运算。
//对布尔值bool进行非运算
//结果:
//true boolean
//false boolean
var bool = true;
document.write(bool + " "+typeof bool+"<br>");
bool = !bool;
document.write(bool + " "+typeof bool);
//对非布尔值进行非运算
//结果:
//hello string
//false boolean
var a = "hello"; //将String转换成Boolean,即true
document.write(a + " " + typeof a + "<br>");
a = !a;
document.write(a + " " + typeof a);
我们可以利用非运算的特点,将其他类型的值转换为布尔值:给任意值取反两次,即可将其转换为布尔值。
//对bool进行两次非运算
//结果:将Number转换为了Boolean
//2 number
//true boolean
var b = 2;
document.write(b + " " + typeof b + "<br>")
b = !!b;
document.write(b + " " + typeof b);
2.与运算
(1)布尔值的与运算
- &&:与运算符,可以对两个布尔值进行与运算
- 运算规则:
只有两个true时,结果才为true
只要出现false,结果即为false
// true与true
//结果:result = true
result = true && true;
document.write("result = " + result);
//true与false
//结果:result = false
result = true && false;
document.write("result = " + result);
result = false && true;
document.write("result = " + result);
//false与false
//结果:result = false
result = false && false;
document.write("result = " + result);
- JS中的“与”为短路“与”,即如果第一个值为false,则不会看第二个值
(2)非布尔值的与运算
- 非布尔值进行与运算时,先转换为布尔值,在进行运算,并返回原值
- 规则:
如果第一个值是true,则返回第二个值
如果第一个值是false,则返回第一个值
// true与true
//结果:result = 5
result = 1 && 5; // 1-->true,5-->true
document.write("result = " + result);
// true与flase
//结果:result = 0
result = 1 && 0; // 1-->true,0-->false
document.write("result = " + result);
// flase与true
//结果:result = NaN
result = NaN && 5; //NaN-->flase,5-->true
document.write("result = " + result);
// flase与flase
//结果:result = undefined
result = undefined && ""; //undefined-->false,''-->false
document.write("result = " + result);
3.或运算
(1)布尔值的或运算
- ||:或运算符,可以对两个布尔值进行或运算
- 运算规则:
只有两个false时,结果为false
只要出现true,结果就为true - JS中的“或”为短路“或”,如果第一个值为true,则不会检查第二个值
// true与true
//结果:result = true
result = true && true;
document.write("result = " + result);
// true与false
//结果:result = true
result = true &&false;
document.write("result = " + result);
// false与true
//结果:result = true
result = false || true;
document.write("result = " + result);
// false与flase
//结果:result = false
result = false || false;
document.write("result = " + result);
(2)非布尔值的或运算
- 非布尔值进行或运算时,先转换为布尔值,在进行运算,并返回原值
- 规则:
如果第一个值是true,则返回第一个值
如果第一个值是false,则返回第二个值
// true与true
//结果:result = hello
result = "hello" || 1; //"hello"-->true,1-->true
document.write("result = " + result);
// true与flase
//结果:result = 5
result = 5 || ""; //5-->true,""->false
document.write("result = " + result);
// flase与true
//结果:result = hello
result = "" || "hello"; //""-->false,"hello"-->true
document.write("result = " + result);
// flase与flase
//结果:result = undefined
result = null || undefined; // null-->false,undefined->false
document.write("result = " + result);