JavaScript 关系运算符
🌙
手机阅读
本文目录结构
JS 关系运算符
同布尔值来表示两个数据之间的关系
大小关系检测
>
- 如果A大于B,则返回true,否则返回值为false
<
- 如果A小于B,则返回true,否则返回值为false;
<=
- 如果A小于等于B,则返回值为true,否则返回false
>=
- 如果A大于等于B,返回true,否则返回值为false
//关系操作符
var testNum=3;
console.log("下面是关系操作符");
console.log(testNum>1);
console.log(testNum>=1);
console.log(testNum<1);
console.log(testNum<=1);
操作规则
- 数值与数值的比较,比较他们的代数值;
- 仅一个运算数是数值,将另一个运算数转换成数值,并比较他们的代数值;
- 字符串间的比较,逐字符比较他们的Unicode数值;//""
- 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较;
- 只要有一个是数值,另外一个无论什么值,都会最终转为数值后再比较)
- 运算数既非数字也非字符串,返回值为
false
; - 与NaN比较,返回值是false;
console.log("20">"100000");//true
console.log(null>2);//false
console.log(NaN>2);//false
注意:做关系比较的时候,一定要把值全部转为数字类型,这是一个很好的习惯;一定要避免2个字符串在一起比较大小;
等值关系检测;( == 和 === )
相等比较
- 操作符
==
比较两个运算数的返回值看是否相等;(和正常生活中的=一定要区分开;)=
比较两个运算数的返回值看是否不想等;
- 类型转换
- 布尔值
- True 1;
- False 0;
- 对象,调用valueOf() 基本类型
- 字符串与数值的比较,字符串转换为数值;
- 布尔值
- 比较原则
- Null与undefined;相等,比较前不做任何转换;
- NaN,与任何数值都不想等,包括其自身;
- 对象,是否属于同一个对象
- 是 ==
- 否 !=
var testNum=3;
console.log("下面是关系操作符");
console.log(testNum==1);
console.log(testNum===1);
console.log(testNum!=1);
【我手动画的转换图】
//转换分析1
console.log("zhuanbang"?true:false);//true,因为非空的字符串是一个真值;
//转换分析2
console.log("zhuanbang"==true);//这个时候输出什么呢?在分析一里非空字符串是一个true,那么非空字符串==true吗?
//转换分析3
console.log("zhuanbang"==false);//如果上面的的返回不是true,那么这个会返回true吗?
//下面的分析的步骤;
/*转换分析2-解析
* 1、右边的布尔值会转为数字,true->1;"zhuanbang"==1
* 2、左边的字符串会转为数字,"zhuanbang"因为里面有字母,所以转换为NaN;NaN==1
* 3、NaN和任何数据都不想等,包括自己,所以结果是false,并不是true;
* */
/*
* 1、右边的布尔值会转为数字,false->0;"zhuanbang"==0
* 2、左边的字符串会转为数字,"zhuanbang"因为里面有字母,所以转换为NaN;NaN==0
* 3、NaN和任何数据都不想等,包括自己,所以结果是false,结果也不是true
* */
相同比较(也叫绝对相等/全等)
- 运算符
===
比较两个运算数的返回值以及数据类型是否相同;!==
比较两个运算数的返回值以及数据类型是否不相同
- 比较原则
- 值类型间比较,只有数据类型相同,且数值相等时才能够相同;
- 值类型与引用类型比较,肯定不相同,
- 引用类型间的比较,比较他们的引用值(内存地址)
简单的说,就是x和y比较,如果两者的类型不同,那就没有比较的意义了,直接返回false;
//相同的小分析
console.log("zhuanbang"===true);
console.log("1"===1);
console.log("zhuanbang"==="zhuanbang");
var person1={name:"zhuanbang"};
var person2={name:"zhuanbang"};
console.log(person1===person2);//false, 是不同的引用地址;在堆内存中储存是不一样的;