跪求大佬解释一下null>=0为true是什么道理

浅樱
  • 446

image.png
呜呜呜。。。,原谅我js基础太弱了。今日写代码时,index是数组索引,但是在不满足条件的情况下会给它置null,我渲染的时候用if(index >= 0),结果代码执行了,让我百思不得其解。

回复
阅读 4k
6 个回答

js 最让人迷惑的地方,相信我,这不是你基础弱不弱的问题,这是js语言本身的锅
参见The Greater-than-or-equal Operator ( >= )
null >= 0 其实求的是 null < 0 的值, 如果null < 0false,那么null >= 0则为true

那么来看看 null < 0的值
根据上文后面11.8.5的描述:

  1. ToPrimitive(null) 保持不变, ToPrimitive(0) 保持不变
  2. 这两者都是不是String类型,调用ToNumber, ToNumber(null) = +0, ToNumber(0) = 0
  3. 0 < 0 结果为false
  4. 那么最终结果为true

所以js中有了独特的优点

null > 0  // false
null < 0  // false
null == 0 // false
null >= 0 // true

null >=0 === Number(null)>=0
Number(null) --> 0
0 >=0 --> true

// 反正就是在 关系运算符中 null 会被转换成 Number
// 在相等 运算中 null 背会转换成 Boolean 的 false

==进行的是布尔运算,>=进行的是数值运算,一个是Number(null),一个是Boolean(null)

console.log(Number(null));

你输出看看是什么就知道咯

美妙的js : null == false == 0 == ''

宣传栏