我必须编写一个例程,如果它的类型是number,则将变量的值增加 1,如果不是,则将 0 分配给变量,其中变量最初是null或undefined。
第一个实现是v >= 0 ? v += 1 : v = 0因为我认为任何不是数字的东西都会使算术表达式为假,但它是错误的,因为它被null >= 0评估为真。然后我学到了null像 0 一样的行为,并且以下表达式都被评估为真。
null >= 0 && null <= 0!(null < 0 || null > 0)null + 1 === 11 / null === InfinityMath.pow(42, null) === 1
当然null不是0。null == 0被评估为false。这使得看似同义反复的表达是(v >= 0 && v <= 0) === (v == 0)错误的。
为什么null像0,虽然它实际上不是0?