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

时间:2018-08-02 07:37:54

标签: javascript if-statement

为什么3>2>1返回false1 < 2 < 3返回true

console.log(1 < 2 < 3);
console.log(3 > 2 > 1);

5 个答案:

答案 0 :(得分:30)

由于'use strict'; const mysqlx = require('@mysql/xdevapi'); const options = { host: 'localhost', port: 33060, password: '******', user: 'root', schema: 'yourconference' }; mysqlx.getSession(options) .then(session => { console.log(session.inspect()); session.close(); }).catch(err => { console.error(err.stack); process.exit(1); }); 的计算结果为1 < 2,而true的计算结果为3 > 2,因此您基本上是在做:

true

然后将console.log(true < 3); console.log(true > 1);转换为true,从而得到结果。

答案 1 :(得分:10)

因为它解释从左到右,并且因为它试图转换为相同的类型。

1 < 2 < 3变为true < 3,这是因为我们正在比较数字,因此强制转换为1 < 3,这是事实。

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

答案 2 :(得分:7)

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

console.log(true < 3);
console.log(true > 1);

答案 3 :(得分:2)

运算符“ <”和“>”关联是从左到右,所以

检查以下链接 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

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 ); 答案为真

答案 4 :(得分:2)

编译器将这样读取 $console.log((1 < 2) < 3)$ console.log(( 3>2 ) > 1)

在第一种情况下:$ console.log(1 < 2 < 3) 第一个编译器执行1 <2并返回1(true),然后它像1 <3一样再次为1(true)。因此总的来说,这是真的。

以相同的逻辑执行第二个,它会给你错误。