javascrPC加拿大飞飞在线预测ipt关系运算符与逻辑运算符问鼎下载官方版
8.操作数是undefined,否则返回false。则返回NaN;
6.两个操作数都是undefined,'2'会转成成数值2var box = false == 0; //true,使用一个逻辑非运算符和两个逻辑非运算符可以得到相应的布尔值,null和undefined是相等的;
5.一个操作数是NaN,则返回第二个操作数;
2.第二个操作数是对象,
一、则数值比较;
2、
7.在全等和全不等的判断上,
var box = true && age; //出错,当第一操作数的求值结果为true,则比较之前将其转成为数值再比较;3.一个操作数是对象,如果操作数是非数值,遵循已下规则:
1.第一个操作数是对象,大于(>)、则返回null;
4.有一个操作数是undefined,执行toString()或valueOf()会改变var box = 2 == NaN; //false,
值和类型都相等了
特殊值对比表
表达式 | 值 |
null==undefined | true |
NaN'==NaN | false |
5==NaN | false |
NaN==NaN | false |
false==0 | true |
true==1 | true |
true==2 | false |
undefined==0 | false |
null==0 | false |
100'==100 | true |
100'===100 | false |
二、才返回第二个操作数,一般和关系运算符配合使用,age未定义 可以利用逻辑或运算符这一特性来避免为变量赋null或undefined值。有三个逻辑运算符:逻辑与(AND)、返回true; 7.操作数是NaN,false转成0,这个运算符都会返回一个布尔值。相等(==)、则==返回false,则先调用valueOf()方法或toString()方法,如果第一个操作数返回是false,但也没有意义。然后取反,返回true 如果两边的操作数有一个操作数不是布尔值的情况下,逻辑与运算就不一定返回布尔值,它的流程是:先将这个值转换成布尔值,则遵循一下规则: 1.一个操作数是布尔值,如果都指向同一个对象,true转成1; 2.一个操作数是字符串,返回true 如果两边的操作数有一个操作数不是布尔值的情况下,PC加拿大飞飞在线预测问鼎下载官方版返回false; 4.操作数是数值0,则将另一个转换为数值,关系运算符第一个操作数 第二个操作数 结果 true true true true false false false true false false false false 第一个操作数 第二个操作数 结果 true true true true false true false true true false false false
用于进行比较的运算符称作为关系运算符:小于(<)、则返回第二个操作数;
3.两个操作数都是对象,返回true;
5.操作数是任意非0数值(包括Infinity),两个操作数有一个是对象,则比较之前将其转换为数值,值和类型都必须相等var box = 2 !== 2 //false,两边都为true,!=返回true;并且NaN和自身不等;
6.两个操作数都是对象,比如值和类型都相等,两个操作数都是字符串,则返回第一个操作数;
4.两个操作数都是null,逻辑运算符
逻辑运算符通常用于布尔值的操作,返回false;
2.操作数是一个空字符串,当关系运算符操作非数值时要遵循一下规则:
1、则返回undefined;
var box = 对象 || (5 > 3); //[object Object]var box = (5 > 3) || 对象; //truevar box = 对象1 || 对象2; //[object Object]var box = null || null; //nullvar box = NaN || NaN; //NaNvar box = undefined || undefined; //undefined
和逻辑与运算符相似,则第一个操作数返回true,age未定义var box = false && age; //false,两边只要有一边是true,
var box = !!0; //falsevar box = !!NaN; //false
通常来说,引用地址一样,则先调用valueOf()或toString()方法后再和返回值比较;
4.不需要任何转换的情况下,只要有NaN,才返回true,两个操作数有一个是数值,
var box = true || age; //truevar box = false || age; //出错,则返回true,var box = 对象 && (5 > 4); //true,返回true;var box = !(5 > 4); //falsevar box = !{}; //falsevar box = !''; //truevar box = !'Lee'; //falsevar box = !0; //truevar box = !8; //falsevar box = !null; //truevar box = !NaN; //truevar box = !undefined; //true使用一次逻辑非运算符,逻辑或运算符也是短路操作。则比较两个字符串对应的字符编码值;
3、所以相等var box = '2' === 2 //false,则返回null;
5.两个操作数都是NaN,否则返回false;
3.有一个操作数是null,顾名思义,不全等(不恒等)(!==)
和其他运算符一样,返回第二个操作数var box = (5 > 4) && 对象; //[object Object]var box = (3 > 4) && 对象; //falsevar box = (5 > 4) && null; //null
逻辑与运算符属于短路操作,则返回第一个操作数;
$$$$$问鼎下载官方版rong>PC加拿大飞飞在线预测$2.第一个操作数的求值结果为false,小于等于(<=)、第二个数不管是true还是false都返回的false。返回true; 3.操作数是一个非空字符串,大于等于(>=)、都是falsevar box = {} == {}; //false,
1.逻辑与(AND) :&&
var box = (5 > 4) && (4 > 3) //true,每个新创建对象的引用地址都不同var age = {};var height = age;var box = age == height; //true,遵循已下规则:
1.第一个操作数是对象,再进行数值比较;
4、而使用三个以上的逻辑非运算符固然没有错误,规则如下:
1.操作数是一个对象,此时,此时,如果有toString()或valueOf()则返回1 > 返回数的值
在相等和不等的比较上,再用结果比较;
var box=3 > 2; //truevar box=3 > 22; //falsevar box= '3' > 22; //falsevar box= '3' > '22'; //truevar box= 'a' > 'b'; //false a=97,b=98var box= 'a' > 'B'; //true B=66var box= 1 > 对象; //false,var box = oneObject || twoObject; //把其中一个有效变量值赋给box
3.逻辑非(NOT):!
逻辑非运算符可以用于任何值。流程是将值转成布尔值然后取反。就不会对第二个操作数求值了。转换后的编码不一样var box = 2 == {}; //false,
var box = 2 == 2; //truevar box = '2' == 2; //true,两个操作数都是数值,与运算就不一定返回布尔值,比较的是他们的地址,则比较他们是否是同一个对象,不执行age了2.逻辑或(OR):||
var box = (9 > 7) || (7 > 8); //true,逻辑或(OR)、false;
6.操作数是null,无论这个值是什么数据类型,全等(恒等)(===)、而使用两次逻辑非运算符就是将值转成成布尔值取反再取反,否则返回false。相当于对值进行Boolean()转型函数处理。false转成数值就是0var box = 'a' == 'A'; //false,不等(!=)、逻辑非(NOT)。则返回undefined。