问题描述
在将数字与javascript中的infinity属性进行比较时,嘿家伙得到了这个奇怪的结果:
console.log( 6 >= !!Infinity)
因此,这给了我“真实”。
有人可以向我解释这个结果吗?
解决方法
!!Infinity
变成true
。
与数字比较时,true
变成1
。6 >= 1
是true
。
使用!!
时,是在将值“转换”为布尔值。可以先将其反转,然后再反转回来。
在JavaScript中,除了false
,0
,-0
,0n
,""
,null
, undefined
和NaN
。
因此,!Infinity
是false
,而!!Infinity
是true
。
请参阅:https://developer.mozilla.org/en-US/docs/Glossary/Truthy
关于在true
运算符中将1
视为>=
的原因,是因为第一个操作数是一个数字,所以true
需要转换为{ {1}}。
文档中有关将事物转换为数字的内容是:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unary_plus