欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1<2<3=true,3>2>1=false,[] == ![]为true,{} == !{}为false

程序员文章站 2022-05-01 23:13:02
...
	1<2<3 		输出结果为  true
	3>2>1 		输出结果为  false
	[] == ![] 	输出结果为  true
	{} == !{} 	输出结果为  false

按照计算顺序,不难理解
1<2输出结果为true,然后true<3,输出结果为true
3>2输出结果为true,然后true>1,输出结果为false
![]输出结果为false,然后[] == false,输出结果为true
!{}输出结果为false,然后{} == false,输出结果为false

抛开前面的扰乱,这个问题的实质是不同数据类型的关系运算

任意值与布尔值比较,都会将两边的值转化为Number。
	Number(true)	1
	Number(false)	0
	Number([])		0
	Number({})		NaN

其中NaN是一个特殊的情况,规定NaN不和任何数值相等,包括它自身。
由此延伸到几个知识点,推荐几篇文章。

  1. js运算符之关系运算符.
  2. javascript基础的==和===底层原理解析.