最佳答案
我必须编写一个例程,如果一个变量的类型是 number,那么它的值就递增1,如果不是,则赋0给该变量,其中该变量最初是 null或 undefined。
第一个实现是 v >= 0 ? v += 1 : v = 0,因为我认为任何不是数字的东西都会使算术表达式为 false,但是它是错误的,因为 null >= 0被计算为 true。然后我了解到 null的行为类似于0,并且下面的表达式都被计算为 true。
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)为 false。
为什么 null像0,尽管它实际上不是0?