JS中类型转换的规则

一、基本规则

1.null == undefined为true

console.log(null == undefined); //true

2.NaN ==NaN 为fasle

console.log(NaN == NaN); //false

3.布尔值在比较相等性之前先将其转换为数值——false转换为0,true转换为1

console.log(1==true); //true
console.log(0==false); //true

4.剩下的都是转换为数字

console.log(!![]);//true
console.log([]==true); //false
console.log(!!{});// true
console.log({}==true); // false
console.log(2==true); //false

将空数组和空对象转换成数字都为0,0相当于false。
true转换成数字为1,不等于2,所以输出false

二、关于NaN

NaN:表示不是一个数字
NaN如果通过 == 、 != 、 === 、以及 !==与其他任何值比较都将不相等 ,包括与其他 NaN值进行比较。必须使用 Number.isNaN() 或 isNaN() 函数。在执行自比较之中:NaN,也只有NaN,比较之中不等于它自己。

console.log(isNaN(NaN)); //true
console.log(Number.isNaN(NaN));  //true
console.log(isNaN(true));  //false

isNaN()和Number.isNaN()之间的区别:如果当前值是NaN,或者将其强制转换为数字后将是NaN,则前者将返回true。而后者仅当值当前为NaN时才为true:

console.log(parseInt('true')); //NaN
console.log(isNaN('true')); //true
console.log(Number.isNaN('true')); //false

isNaN会进行一次强制转换为数字的操作,而Number.isNaN不会。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值