Javascript 为什么3>;2>;1返回false,而1<;2<;3返回真值?

Javascript 为什么3>;2>;1返回false,而1<;2<;3返回真值?,javascript,if-statement,Javascript,If Statement,为什么3>2>1返回false,而1console.log(true>1)=>(true表示1)=>console.log(1>1); 答案为假 console.log(3>2>=1)==>console.log(true>=1)=>(true表示1)=>console.log(1=1); 答案是正确的编译器的读数如下 $console.log((11) 在第一种情况下:$console.log(1

为什么
3>2>1
返回
false
,而
1<2<3
返回
true

console.log(1<2<3);

控制台日志(3>2>1)由于
1<2
的计算结果为
true
3>2
的计算结果为
true
,因此您基本上在做:

console.log(true<3);

console.log(true>1),因为它从左到右进行解释,并且试图转换为相同的类型

1<2<3
变为
true<3
,这是因为我们在比较数字,所以被转换为
1<3
,这是真的


3>2>1
变为
true>1
,这是因为我们在比较数字,所以将其转换为
1>1
,这是错误的。

这是因为它是从左到右求值的,使其等效于以下命令:

console.log(true<3);
console.log(true>1)运算符“”的关联性是从左到右的

检查下面的链接

console.log(1<2<3)=>console.log(true<3)=>(true表示1)=>console.log(1<3); 答案是正确的

console.log(3>2>1)==>console.log(true>1)=>(true表示1)=>console.log(1>1); 答案为假

console.log(3>2>=1)==>console.log(true>=1)=>(true表示1)=>console.log(1=1);
答案是正确的

编译器的读数如下
$console.log((1<2)<3)
$console.log((3>2)>1)

在第一种情况下:
$console.log(1<2<3)
第一个编译器执行1请参见运算符优先级和关联性。