最佳答案
我必须编写一个例程,如果一个变量的类型是 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 === 1
1 / null === Infinity
Math.pow(42, null) === 1
当然,null
不是0。 null == 0
被计算为 false。这使得看似重复的表达式 (v >= 0 && v <= 0) === (v == 0)
为 false。
为什么 null
像0,尽管它实际上不是0?