下面的javascript函数输出为false
,为什么它会导致错误?
console.log(15 > 10 > 5);
因为比较运算符需要两个操作数。首先,你的代码评估返回15 > 10
的true
然后它确实true > 5
显然返回false
comparison operators从左到右采取两个操作数和同事。这意味着表达式15 > 10 > 5
被评估为(15 > 10) > 5
。
15 > 10
显然评估为true
。
true > 5
的评估方式并不明显。
幸运的是,JavaScript documentation解释了当它们具有不同类型时如何转换值:
如果其中一个操作数是布尔值,则布尔操作数将转换为
1
(如果为true)和+0
(如果它是false
)。
这意味着true > 5
的评估方式与1 > 5
相同,只是现在结果很明确:它是false
。