为什么3>2>1
返回false
而1 < 2 < 3
返回true
?
console.log(1 < 2 < 3);
console.log(3 > 2 > 1);
答案 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)。因此总的来说,这是真的。
以相同的逻辑执行第二个,它会给你错误。