0
点赞
收藏
分享

微信扫一扫

JavaScript null和0和undefined的比较

null和0和undefined的比较

alert( null > 0 );  // (1) false

alert( null == 0 ); // (2) false

alert( null >= 0 ); // (3) true

注意:这是因为相等性检查 == 和普通比较符 > < >= <= 的代码逻辑是相互独立的。进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为什么(3)中 null >= 0 返回值是 true,(1)中 null > 0 返回值是 false。

另一方面,undefined 和 null 在相等性检查 == 中不会进行任何的类型转换,它们有自己独立的比较规则,所以除了它们之间互等外,不会等于任何其他的值。这就解释了为什么(2)中 null == 0 会返回 false。

 

关于undefined不应该和任何值进行比较。

alert( undefined > 0 ); // false (1)

alert( undefined < 0 ); // false (2)

alert( undefined == 0 ); // false (3)

(1) 和 (2) 都返回 false 是因为 undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false。

(3) 返回 false 是因为这是一个相等性检查,而 undefined 只与 null 相等,不会与其他值相等。

除非你非常清楚自己在做什么,否则永远不要使用 >= > < <= 去比较一个可能为 null/undefined 的变量。对于取值可能是 null/undefined 的变量,请按需要分别检查它的取值情况。

例子1:

let s1 = null==0;

let s2 = null==0;

let s3 = null>=0;

let s4 = undefined>0;

let s5 = undefined<0;

let s6 = undefined==0;

 

console.log('s1: ',s1)

console.log('s2: ',s2)

console.log('s3: ',s3)

console.log('s4: ',s4)

console.log('s5: ',s5)

console.log('s6: ',s6)

结果:

JavaScript null和0和undefined的比较_类型转换

例子2:

let s1 = 5 > 4;

let s2 = "apple" > "pineapple";

let s3 = "2" > "12";

let s4 = undefined == null;

let s5 = undefined === null;

let s6 = null == "\n0\n";

let s7 = null === +"\n0\n";

 

console.log('s1: ',s1)

console.log('s2: ',s2)

console.log('s3: ',s3)

console.log('s4: ',s4)

console.log('s5: ',s5)

console.log('s6: ',s6)

console.log('s7: ',s7)

结果:

JavaScript null和0和undefined的比较_取值_02

 

举报

相关推荐

0 条评论