js运算符之关系运算符

关系运算符包括> 、>=、<、<=、==、 ===,运算结果会返回一个布尔值。

数值比较举例:

	var a = 3;
	var b = 4;
	console.log(a > b); //false

== 和 != 是比较运算,比较的时候等号两边的内容会进行隐式转换,只比较转换后的值是否相等,不比较转换前的类型是否相同。

不同类型的数据使用 == 比较时的转换规则:

一、布尔值与各种数据类型的比较:

1、布尔值和字符串比较,将布尔值和字符串都转换为数值。

	console.log("3" == true); //false
	console.log(" " == true); //false

2、布尔值和数值比较,将布尔值转换为数值。

	console.log(3 == true); //false

3、布尔值与其他数据类型的比较:

	console.log(undefined == false); //false 布尔值不能转换为undefined,所以不相同
	console.log(null == false); //false 布尔值不能转换为null,所以不相同
	console.log({ a: 1 } == true); //false 布尔值不能转换为对象,所以不相同
	console.log(([] == false)); //true 数组比较时,如果比较布尔值,优先将数组转换为字符串,然后再比较
	console.log(![] == false); //true 一旦使用!,优先将[]看做对象,所以[]就是true,取反就是false
	console.log(![] == []); //true

二、字符串与各种数据类型的比较:

1、字符串和数值比较,优先将字符串转换为数值

	console.log("3" == 3); //true
	console.log("0" == 0); //true
	console.log("" == 0); //true

2、字符串与其他数据类型的比较:

	console.log("undefined" == undefined); //false
	console.log("null" == null); //false
	console.log("" == null); //false
	console.log("" == undefined); //false
	
	console.log("{a:1}" == { a: 1 }); //false
	console.log("[object Object]" == { a: 1 }); //true    因为对象有toString()方法,一旦比较时就会隐式触发对象的toString()方法
	
	console.log("a" == ["a"]); //true 数组会转换为字符串比较。    如果是把字符串转换为数组,那它们就是两个对象,而两个对象是不相等的。

注意: 0、false、"" 三者之间互相使用 == 比较时的结果都是true。

	console.log(0 == ""); //true
	console.log("" == false); //true
	console.log(0 == false); //true

三、其他数据类型之间的比较:

1、undefined和null

	console.log(undefined == null)

默认规定的只有 undefined == null 的结果是true,它们和其他的数据类型进行比较结果时,结果都是false。

	console.log(NaN == NaN); //false

2、非数值NaN

规定NaN不和任何数值相等,包括它自身。

	console.log(isNaN(Number("a"))); //true

使用isNaN()方法可以判断里面的数据是否是非数值,如果是非数值(即不是数值)则返回true,否则返回false。


=== 和 !== 是绝对相等和绝对不相等,先判断类型是否相同,再判断值是否相同。

	if (!a) { }

能进入上面if判断的a满足的条件有:""、undefined、null、0、false、NaN。

	if (a == false) { }

能进入上面if判断的a满足的条件有:0、""、false。

	if (a == undefined) { }

能进入上面if判断的a满足的条件有:null、undefined。

	if (a === undefined) { }

能进入上面if判断的a满足的条件有:undefined。



另外,Object.is() 类似于 === 。

	console.log(Object.is("3", 3)); //false
	console.log(Object.is(3, 3)); //true

注意: 在Object.is()中,NaN和它自身是相等的。

	console.log(Object.is(NaN, NaN)); //true
	console.log(NaN === NaN); //false
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值