Javascript--Boolean运算符
Boolean运算符有3种:
1.逻辑NOT
逻辑NOT由!表示.与逻辑OR和逻辑AND运算符不同的是:逻辑NOT运算符返回的一定是Boolean值.
逻辑NOT运算符的行为如下:
- 如果运算数是对象,返回false
- 如果运算数是0以外的其他任何数字,返回false
- 如果运算数是0,返回true
- 如果运算数是null,返回true
- 如果运算数是NaN,返回true
- 如果运算数是undefined,发生错误
- 对Boolean值求非,从而得到真正的Boolean值
例子:
function display(value){ document.write(value+"<br/>"); } display(!new Object()); display(!100); display(!0); display(!null); display(!NaN); display(!true); display(!false); //undefined display(!ss);
结果:
总结:
- 如果运算数是0,null,NaN以及未定义的值,则求非之后,结果为true
- 如果运算数是0以外的任何数字或对象,则求非之后,结果为false
2.逻辑AND运算符
逻辑AND运算符由&&表示.逻辑AND是简便运算,即:如果第一个运算数决定了结果,就不再计算第二个运算数,对于逻辑与来说,如果第一个运算数是false,无论第二个运算数的值是什么,都不可能等于true.
下面采用真值的方式来描述:
第一个操作数 第二个操作数 结果 true true true true false false false true false false false false 逻辑AND运算符的运算数可以是任何类型的,不止是Boolean值.如果某个运算数不是原始的Boolean值,逻辑AND并不一定返回Boolean值.
- 如果第一个运算数是对象,那么返回第二个运算数
- 如果某个运算数是null,则返回null
- 如果某个运算数是NaN,则返回NaN
- 如果某个运算数是undefined,则发生错误
例子:
function display(value){ document.write(value+"<br/>"); } var trueValue = true; var falseValue = false; var obj1 = new Object(); obj1.name="obj1"; var obj2 =new Object(); obj2.name="obj2"; var result; //如果第一个运算数是对象,另一个运算数是Boolean值,则返回Boolean值 result = obj1 && trueValue; display(result); result = obj1 && falseValue; display(result); //如果第一个运算数是Boolean值,则会按照简便运算方式运行 result = trueValue && obj1;//obj1 && true; display(result.name); result = falseValue && obj1; display(result); display(trueValue && 'www') //如果两个运算数都是对象,则返回第二个对象 result = obj1 && obj2; display(result.name); //如果某个运算数是null,则返回null result = obj1 && null; display(result); //如果某个运算数是NaN,则返回NaN result = obj1 && NaN; display(result); //如果某个运算数是undefined,则发生错误 result = obj1 && ss; display(result);
结果:
总结:
- 当变量为null,NaN以及未定义值的时候和false一样,拥有否决权,分别返回null,NaN,undefined.
- 当运算数为对象时,都将通过运算.如果第一个运算数通过运算,那么将返回第二个运算数.
- 当运算数未被声明时,引发错误.
3.逻辑OR运算符
逻辑OR运算符由||表示.逻辑OR运算符也是简便运算,如果第一个运算数为true,则不再计算第二个运算数.
下面采用真值的方式来描述:
第一个操作数 第二个操作数 结果 true true true true false true false true true false false false
逻辑OR运算符的运算数可以是任何类型的,不止是Boolean值.如果某个运算数不是原始的Boolean值,逻辑OR并不一定返回Boolean值.
- 如果第一个运算数是对象,则返回该对象
- 如果第一个运算数为false,null,NaN,undefined,第二个运算数为null,则返回null
- 如果第一个运算数为false,null,NaN,undefined,第二个运算数为NaN,则返回NaN
- 如果第一个运算数为false,null,NaN,undefined,第二个运算数为undefined,则引发错误.
例子:
function display(value){ document.write(value+"<br/>"); } var trueValue = true; var falseValue = false; var obj1 = new Object(); obj1.name="obj1"; var obj2 =new Object(); obj2.name="obj2"; var result; //如果第一个运算数是对象,则返回该对象 result = obj1 || trueValue; display(result.name); result = obj1 || falseValue; display(result.name); result = obj1 || obj2; display(result.name); //如果第一个运算数为false,null,NaN,undefined,第二个运算数为null,则返回null display(false || null); //如果第一个运算数为false,null,NaN,undefined,第二个运算数为NaN,则返回NaN display(null || NaN); //如果第一个运算数为false,null,NaN,undefined,第二个运算数为undefined,则引发错误 display(NaN || ss); display(ss || ss);
结果: